centos8+docker系列(3)——docker容器创建和运行方式

前面两篇文章已经详细讲解了关于docker安装、镜像操作和简单的容器创建内容:
基于centos8.0环境下docker安装
centos8+docker系列(2)——镜像image操作
本文着重讲解在生产环境中,常见的两种容器创建和运行方式

运行容器命令run

参数:

  • -d:后台运行容器,并返回容器id,即启动守护式容器
  • -i:以交互模式运行容器
  • -t:为容器重新分配一个伪终端
  • –name:手动为容器指定一个名称
  • -p:指定端口映射
  • -v:挂载卷

创建容器的两种方式

1.启动且进入交互式容器

查看镜像:

sudo docker image ls

发现有centos7镜像,以此为基础创建交互式容器并进入:

sudo docker container run -it --name cs7 centos:7 

如果只是想创建容器并不进入,可以执行:

sudo docker container create -it --name cs7 centos:7 

然后在需要的时候,执行启动和进入容器的命令:

sudo docker container start cs7 //启动容器

sudo docker container attach cs7 //进入容器

退出容器分两种:

exit //直接退出容器,并且关闭容器,重新进入需要重新启动容器。

ctrl+p+q //静默退出,退出后并不关闭容器,下次可直接进入。注意p和q的先后顺序。

2.创建守护式容器

docker运行机制:docker容器运行就必须有一个前台进程,容器运行的命令如果不是一直挂起的命令(如:tail -f;top或者/bin/bash),
就会自动退出

创建守护式容器:

sudo docker container run -d --name cs7 centos:7

注意参数的不同,创建守护式容器使用的参数是“-d”

交互式容器因为有交互界面的存在,容器一直有事可做,所以不会自动退出,守护式容器如果没有具体业务,开启后会随即关闭。

我们为守护式容器创建一个循环的业务,具体代码如下,但我们不需要关心后面执行的语句,那不是我们关注的重点:

sudo docker run -d --name cs7 centos:7 /bin/bash -c "while true;do echo hello world;sleep 3;done" 

打印容器后,发现cs7容器并没有直接关闭,一直在运行。如图:

在这里插入图片描述
此时查看日志:

sudo docker container logs 

发现控制台一直在打印“hello world”,容器有事干,所以没关闭。
此时如果我们用attach命令进入容器,会发现不论在终端输入什么命令,它都会一直打印“hello world”,连退出容器的命令都无法执行。如图:
在这里插入图片描述
所以需要用“exec”进入容器,它与attach的区别是,会启动新的进程(伪终端),从而不受容器内业务影响:

sudo docker container exec -it cs7 /bin/bash

3.查看守护式容器内容

很多时候,我们需要知道某个容器究竟在执行什么操作,这时候需要借助命令行:

sudo docker container exec cs7 ps -ef

执行结果如图:
在这里插入图片描述

4.创建并保持容器不关闭(并不进入容器)

在实际生产环境中,我们会有很多情况需要创建一个容器,但是容器内可能并未产生具体的业务,所以我们也不需要进入容器操作什么。
此时,我们需要用结合交互式和守护式的参数,-it产生的交互式作为守护进程,维持守护式容器的开启,代码如下:

sudo docker container run -itd --name cs7 centos:7 

此时,创建的容器时守护式的,并不会进入容器,并且容器不会直接关闭。这是生产环境中创建容器使用最多的一种方式。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中二少年学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值