内容摘要

  • 暂停/取消暂停容器

  • 删除容器

  • 进入容器

  • 创建容器




暂停/取消暂停容器

暂停容器命令:

 docker pause 容器ID/容器名

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




取消暂停命令:

 docker unpause 容器ID/容器名

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

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

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




删除容器

使用命令:

docker rm 容器ID/容器名

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

docker stop 容器ID/容器名

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




进入容器

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

进入容器方式有两种:

docker attach

docker attach 容器ID

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

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

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

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




docker exec

docker exec -it 容器ID bin/bash

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

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

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

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

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

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

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

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




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

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

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


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

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

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


退出容器后,可以看到主机名变为 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"

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


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

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





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

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

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


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

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

对centos_create容器执行docker start命令:

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


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

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




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

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


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




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

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


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

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



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

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




实验

暂停容器

取消暂停容器

删除容器

进入容器

创建容器



文章作者:HandFirstDocker

原文链接:https://www.toutiao.com/i6733820170835329549/