docker status命令_Docker动手教程2.2:容器基本操作2

内容摘要

  • 暂停/取消暂停容器
  • 删除容器
  • 进入容器
  • 创建容器

暂停/取消暂停容器

暂停容器命令:

 docker pause 容器ID/容器名
08d8868368a7bfc1d7245b388d5386af.png

注意STATUS列,被暂停的容器的状态依旧是“Up”,但是后面括号显示为“Paused”。


取消暂停命令:

 docker unpause 容器ID/容器名
f54ce6d7c34cc4502b1fd53b87be6a0e.png

可以看到STATUS列,状态变为“Up”,没有“Paused”字样了。

从上面可以看出,暂停操作表示容器没有退出,仍然在工作。暂停会减少CPU的使用,主机可以利用更多的计算资源。

在暂停的过程中,我们可以做很多操作,比如给容器文件系统建立快照,测试时查看日志等。


删除容器

使用命令:

docker rm 容器ID/容器名
c2f9975f5bf6fb10f512a60e375ea679.png

容器删除报错,从错误信息可以看出,在删除前,必须先停止容器,命令为:

docker stop 容器ID/容器名
7d07a266d21b831cdb84549eec779a89.png

停止容器后,容器删除成功。


进入容器

容器可以看成是一台微型电脑,有自己独立的文件系统,环境变量等。因此,在容器运行起来后,可以进入容器内部观察。

进入容器方式有两种:

docker attach

docker attach 容器ID

容器ID可以是长ID或者短ID

运行centos容器,进入其中观察:

7e3171e0cb07c3258aa152572fcb1f35.png

进入容器后发现,每隔5秒输出"hello docker"字符串,正好是运行容器时,使用while循环要求输出的内容。

可见,docker attach进入容器后,正好是容器运行时所用的同一终端,这点很重要。由于没有启动新的终端,没有启动新的进程,这样能节省资源。另外,如果我们想看容器启动时执行命令的输出信息,可以直接使用该命令。


docker exec

docker exec -it 容器ID bin/bash

-it 表示以交互模式打开终端,执行/bin/bash命令。

5f3df9a1014fb42217c134cc136fcaba.png

可以看出执行docker exec后,进入容器的主机名是容器的短ID。

进入后,可以执行在主机上执行的命令,如下:

30c1865fe051c70de3923740897adcce.png

运行ps -elf查看进程,可以看到输出结果最后一行显示当前的ps命令,倒数第二行显示的是容器运行执行的 sleep 5 指令;

pwd指令查看当前工作目录;

ls 查看根目录下文件信息;

hostname指令查看容器主机名为容器短ID。

在主机上能够运行的指令也能够在容器中执行,可见容器相当于一台微型电脑。


问题:容器中的文件系统和主机是一样的吗?

我们在容器中创建一个文件,并写入内容:

3ca39a94eb62364ec2724cb30e99d719.png

在根目录 / 下创建 hello_world.txt 文件,并写入 hello docker! 字符串。

接着使用 exit 命令退出容器,查看主机根据目录下是否有该文件:

ce0cc275297cdd244d94961aee079cc6.png

退出容器后,可以看到主机名变为 DOCKER ,不再是容器的短ID了,可见已经从容器中退出来了。使用 ls 命令查看根目录下的文件,没有看到在容器中创建的 hello_world.txt 文件。

和docker exec相比,我们进入容器后新打开了一个终端,不是容器运行时使用的终端,因此无法看到容器运行指令的输出日志。


创建容器

前面讲到的docker run 命令可以直接运行一个容器,实际上该命令包括两个命令,即docker create 和 docker start(下一节会讲解):

新建两个容器,分别以docker run 和 docker create 执行,名字分别叫centos_run和centos_create,命令如下:

docker create --name docker_create centos /bin/bash -c "while true; do sleep 5; echo hello docker create; done"docker run -d --name docker_run centos /bin/bash -c "while true; do sleep 5; echo hello docker run; done"
200b1de939d6476596dc6ab49cb50b40.png

从 docker ps -a 指令的输出结果STATUS列可以看出:centos_run容器的状态为Created,而centos_run容器的状态为Up。

注意:两个容器执行指令输出内容不同,docker_run容器输出 hello docker run,docker_create容器输出 hello docker create。


问题:处于Created状态的容器实际运行起来了吗?

可以通过 ps -elf 命令查看:

47fcf91c462d8495f144043811bf4930.png

可以看到,只有centos_run容器的进程存在,centos_create容器进程不存在。

也就是说centos_create容器确实被创建了,但是没有运行。

对centos_create容器执行docker start命令:

83d5067b766ca109a5bcd29778feda2b.png

可以看出,执行 docker start 命令后,centos_create 的状态变为了Up。

总之,容器运行被分解为了两个动作: create / start。


问题:处于Created状态下的容器可以执行 docker stop 操作吗?

0d91e77456331976ed428eb952d9ab34.png

docker stop操作可以顺利执行,不过查看STATUS 列,状态依然是Created,可见处于Created状态下的容器做docker stop 操作没有实际意义。


问题:处于Created状态下的容器可以执行 docker rm 操作吗?

049ab7a5cacee57ecdb66aef4f752ddb.png

可见,是可以做这个操作的。

上面的内容已经涉及到容器的状态和生命周期,下节会详细讲解容器的生命周期。


至此,容器的基本操作就讲解完了,这些操作基本涵盖了容器最常用的操作。

请大家按照本节的内容,在阿里云ECS服务器上做实验。


实验

暂停容器

取消暂停容器

删除容器

进入容器

创建容器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值