CompTIA A+ 认证考试的学习资源
2024年3月17日差异解释
2024年3月17日本 docker 教程讨论了同时停止单个 docker 容器、多个 docker 容器或所有正在运行的 docker 容器的方法。您还将学习如何优雅地停止 docker 容器。
要停止 docker 容器,您所需要做的就是按以下方式使用容器 ID 或容器名称:
docker stop container_ID_or_name
您还可以使用dockercontainerstopcontainer_id_or_name 命令,但这是命令中的一个附加词,它不会提供任何额外的好处,因此请坚持使用 dockerstop。
但是,您应该了解更多有关停止 docker 容器的信息,特别是如果您是 Docker 初学者。
停止 docker 容器的实际示例
![](https://www.alaica.com/wp-content/uploads/linux-314.png)
我将在本教程中讨论有关停止 docker 容器的各个方面:
- 停止 Docker 容器
- 一次停止多个 docker 容器
- 停止具有特定镜像的所有 docker 容器
- 立即停止所有正在运行的 docker 容器
- 优雅地停止 docker 容器
在看到它之前,您应该知道如何获取容器名称或 ID。
您可以使用docker ps 命令列出所有正在运行的 docker 容器。如果没有任何选项,docker ps 命令仅显示正在运行的容器。
abhishek@linuxhandbook:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 8 minutes ago Up About a minute container-2
94f92052f55f debian "bash" 10 minutes ago Up 10 minutes container-1
输出还为您提供容器名称和容器 ID。您可以使用这两者之一来停止容器。
现在让我们开始停止容器。
1.停止docker容器
要停止特定容器,请通过docker stop 命令使用其 ID 或名称:
docker stop container_name_or_ID
输出应该更具描述性,但它只显示您提供的容器名称或 ID:
abhishek@itsfoss:~$ docker stop 1bcf775d8cc7
1bcf775d8cc7
您可以在已停止的容器上使用 docker stop 命令。它不会抛出任何错误或不同的输出。
您可以使用 docker ps -a 命令验证容器是否已停止。-a 选项显示所有容器,无论它们是正在运行还是已停止。
abhishek@itsfoss:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 19 minutes ago Exited (0) About a minute ago container-2
94f92052f55f debian "bash" 29 minutes ago Up 29 minutes container-1
如果状态为Exited,则表示容器不再运行。
2.停止多个docker容器
您也可以一次停止多个 docker 容器。您只需提供容器名称和 ID。
docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3
与之前一样,输出将仅显示容器的名称或 ID:
abhishek@itsfoss:~$ docker stop container-1 container-2 container-3
container-1
container-2
container-3
3. 停止与镜像关联的所有容器
到目前为止,您所看到的通过明确提及容器的名称或 ID 来停止容器。
如果你想停止某个 docker 镜像的所有正在运行的容器怎么办?想象一个场景,您想要删除 Docker 映像,但必须停止所有关联的正在运行的容器。
您可以一一提供容器名称或 ID,但这非常耗时。您可以做的是根据基础镜像过滤所有正在运行的容器。
只需将 IMAGE_NAME 替换为您的 docker 映像名称,您就应该能够停止与该映像关联的所有正在运行的容器。
docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
选项 -q 仅显示容器 ID。感谢出色的 xargs 命令,这些容器 ID 作为参数通过管道传输到 docker stop。
4.停止所有正在运行的docker容器
您可能会遇到需要停止所有正在运行的容器的情况。例如,如果你想删除 Docker 中的所有容器,你应该事先停止它们。
为此,您可以使用与上一节中看到的类似的内容。只需删除图像部分即可。
docker ps -q | xargs docker stop
5. 优雅地停止容器
老实说,docker 默认情况下会优雅地停止容器。当您使用 docker stop 命令时,它会在强行杀死容器之前给容器 10 秒的时间。
这并不意味着停止容器总是需要 10 秒。只是如果容器正在运行某些进程,它会在 10 秒内停止该进程并退出。
Docker stop 命令首先发送 SIGTERM 命令。如果容器在此期间停止,它会发送 SIGKILL 命令。进程可能会忽略 SIGTERM,但 SIGKILL 会立即终止该进程。
我希望您知道SIGTERM 和 SIGKILL 之间的区别。
![](https://www.alaica.com/wp-content/uploads/linux-42.jpg)
您可以使用 -t 选项更改 10 秒的宽限期。假设您想在停止容器之前等待 30 秒:
docker stop -t 30 container_name_or_id
到底…
我认为这么多的信息很好地涵盖了这个主题。您了解很多有关停止 docker 容器的知识。
请继续关注更多 docker 技巧和教程。如果您有疑问或建议,请在评论部分告诉我。