维护和操作Docker容器

知道如何创建dockerfile并使用该dockerfile构建docker映像后,我们可以继续深入研究更高级的方式来操作docker容器。当我们谈论操纵Docker容器时,我们包括运行,列出,重新启动,清理悬空的容器,以交互和分离模式运行容器,使用可执行映像创建容器,使用exec命令在docker容器内执行命令以及在a内启动bash容器,从Docker容器访问日志并杀死或停止Docker容器。

事不宜迟,让我们深入研究如何操纵Docker容器。

  • 运行Docker容器

使用docker build命令构建映像后,可以使用docker run命令运行与该映像关联的容器。

sudo docker run <image−name>

此命令仅运行指定docker映像的实例。如果您之前已经创建过映像,并且想要运行该映像的另一个实例,则可以使用docker create命令创建另一个容器。

sudo docker create <image−name>

如果您之前已经创建了docker容器,并且想要立即运行该容器,则需要将其与Id一起使用。要找出容器的ID,可以使用以下命令-

sudo docker ps −a

获得容器的ID后,您可以使用以下命令启动容器-

sudo docker start <container−id>

如果希望容器在启动时启动bash,则必须在docker start命令中使用attach标志。

sudo docker start −a <container−id>
  • 列出所有docker容器

如果要显示所有Docker容器的列表,可以使用以下命令。

sudo docker ps −a

上面的命令显示本地计算机中所有docker容器的容器ID,关联的映像名称,创建日期,状态等。

  • 清理所有悬挂的容器

要清理所有退出的容器,您需要获取状态已退出的容器的ID。您可以使用上面讨论的docker ps -a命令这样做。拥有容器ID后,可以使用以下命令删除容器-

sudo docker rm <container−id>

如果要从系统中删除所有docker对象,则可以使用prune命令。

sudo docker system prune
  • 重新启动Docker容器

重新启动Docker容器时,如果该容器已经在运行,则会先将其杀死,然后再将其重新启动。它与start命令不同,因为start命令用于启动当前未运行的容器。

sudo docker restart <container−id>
  • 以交互模式运行Docker容器

您可以以交互方式启动docker容器bash,并以与使用交互方式在主机终端中运行命令相同的方式在该bash中运行命令。如果要以交互方式启动python容器,则可以使用python shell,如果要以交互方式启动ubuntu容器,则可以使用ubuntu终端。

sudo docker run −it ubuntu
  • 运行可执行映像的容器

如果您的Docker映像是可执行文件,即与之关联的是CMD或ENTRYPOINT指令,则可以在docker run命令中传递参数以使其在docker容器启动时执行。

sudo docker run <image−name> <args>

例如,要列出ubuntu容器的根目录中的所有文件,可以使用以下命令-

sudo docker run ubuntu ls
  • 以分离模式运行Docker容器

在分离模式下运行docker容器,即使关闭终端,也让它在后台运行。您可以使用-d标志来实现。

sudo docker run −d ubuntu
  • 启动Docker容器的bash

要启动docker容器的bash,以便您可以在容器内执行命令以安装软件包或操纵文件系统,可以使用以下命令-

sudo docker run −it <image−name> /bin/bash

要么

sudo docker exec −it <container−id> sh
  • 直接在容器内执行命令

您还可以使用docker exec命令,直接在docker容器内执行指定的命令。

sudo docker exec <container−id> <command>
sudo docker exec −it <container−id> /bin/bash
  • 停止/杀死Docker容器

要优雅地停止容器,可以使用docker stop命令。它首先发送一个称为SIGTERM的信号,如果没有停止,则发送SIGKILL信号。

sudo docker stop <container−id>

要直接停止或杀死容器,请使用以下命令-

sudo docker kill <container−id>

总而言之,在本文中,我们已经看到了无缝维护和操作Docker容器所需的几乎所有重要命令。