docker create_Docker动手教程2.2:容器基本操作2

内容摘要

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

暂停/取消暂停容器

暂停容器命令:

 docker pause 容器ID/容器名
828741427ace2939eae76700e64a0e4c.png

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


取消暂停命令:

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

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

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

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


删除容器

使用命令:

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

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

docker stop 容器ID/容器名
b04473f9593e69cc63cf65b6947f8bdb.png

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


进入容器

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

进入容器方式有两种:

docker attach

docker attach 容器ID

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

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

0c693dda0ebf5f228ea3118398ad4675.png

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

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


docker exec

docker exec -it 容器ID bin/bash

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

6e40ce064a4cb92967b3ca42294e18c0.png

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

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

0b4222af238eb6dadcedb0c943184544.png

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

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

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

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

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


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

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

2a71cc3b37c068511f87c3f6433d7b51.png

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

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

f64904c060972fc2d99e31dd2580a7ef.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"
1c9b479cccb48e59a6aed057bbd9ef93.png

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

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


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

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

10cd9b6552bea5c45e0989010dfa8ee8.png

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

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

对centos_create容器执行docker start命令:

c9fa29a41b3581a31bab65358bbc9414.png

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

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


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

6fa9ee4cda4842c4b4ac0b1bbfcc36c2.png

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


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

941c972b1c0f45c73cc7aab494957cc4.png

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

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


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

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


实验

暂停容器

取消暂停容器

删除容器

进入容器

创建容器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值