拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何刪除Docker容器?多个Docker容器强制删除方式

如何刪除Docker容器?多个Docker容器强制删除方式

白鹭 - 2021-11-23 2219 0 2

1. 概述

在上一篇文章中,我们学习了如何删除 Docker 镜像。但是,只有当没有 Docker 容器正在使用该映像时,才能删除 Docker 映像。因此,要删除 Docker 映像,必须删除使用该映像运行的所有 Docker 容器。


在本教程中,我们将学习使用不同的方法删除 Docker 容器。

2. 为什么要删除 Docker 容器?

当 Docker 容器完成其执行时,它会达到exited状态。这样的容器不消耗任何 CPU 或内存,但它们仍然使用机器的磁盘空间。此外,除非我们在运行 Docker 容器时–rm标志,否则不会自动删除停止的容器。


因此,随着越来越多的容器进入exited状态,它们消耗的整体磁盘空间会增加。因此,我们可能无法启动新容器,或者 Docker 守护进程会停止响应。


为避免此类情况,建议使用–rm标志运行 Docker 容器或定期手动删除 Docker 容器。


现在让我们学习如何删除 Docker 容器。

3. 刪除单个 Docker 容器

首先,我们将在非交互模式下启动一个 CentOS Docker 容器。通过这样做,容器将在我们运行容器后立即停止:

$ docker run --name mycontainer centos:7
 $ docker ps -a
 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 418c28b4b04e centos:7 "/bin/bash" 6 seconds ago Exited (0) 5 seconds ago mycontainer

现在让我们使用mycontainer docker rm命令刪除 Docker 容器 mycontainer :

$ docker rm mycontainer
 mycontainer
 $ docker ps -a
 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

我们还可以使用 Docker 容器 id 而不是 Docker 容器名称来使用docker rm命令刪除 Docker 容器:

$ docker rm 418c28b4b04e

4. 刪除多個 Docker 容器

我们还可以使用docker rm命令删除多个 Docker 容器。 docker rm命令接受以空格分隔的 Docker 容器名称或 id 列表,并将它们全部刪除:

$ docker ps -a
 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 23c70ec6e724 centos:7 "/bin/bash" 6 seconds ago Exited (0) 5 seconds ago mycontainer3
 fd0886458666 centos:7 "/bin/bash" 10 seconds ago Exited (0) 9 seconds ago mycontainer2
 c223ec695e2d centos:7 "/bin/bash" 14 seconds ago Exited (0) 12 seconds ago mycontainer1
 $ docker rm c223ec695e2d mycontainer2 23c70ec6e724
 c223ec695e2d
 mycontainer2
 23c70ec6e724

在上面的示例中,我們使用docker rm命令exited

我们可以将 Docker 容器名称和 id 与任何 Docker 命令互换使用。请注意,我们对 mycontainer1 和mycontainer3使用了 Docker 容器 ID,对mycontainer1了容器名称mycontainer2.

5. 刪除所有 Docker 容器

考虑一个场景,机器上存在太多停止的 Docker 容器,现在我们希望将它们全部删除。当然,我们可以使用上面的方法,将所有的容器 id 传递给docker rm命令。但是让我们研究一个更优化和更简单的命令来刪除所有 Docker 容器:

$ docker ps -a
 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 b5c45fa5764f centos:7 "/bin/bash" 4 seconds ago Exited (0) 3 seconds ago mycontainer1
 ed806b1743cd centos:7 "/bin/bash" 9 seconds ago Exited (0) 7 seconds ago mycontainer2
 2e00a052eb12 centos:7 "/bin/bash" 13 seconds ago Exited (0) 12 seconds ago mycontainer3
 $ docker rm $(docker ps -qa)
 b5c45fa5764f
 ed806b1743cd
 2e00a052eb12

命令docker ps -qa返回机器上所有容器的数字 ID。然后将所有这些 id 传递给docker rm命令,该命令将迭代刪除 Docker 容器。

我们还可以使用docker container prune命令刪除所有停止的容器:

$ docker container prune -f

在这里,我们使用-f标志来避免提示确认。

6. 強行刪除正在运行的 Docker 容器

我们在上面的示例中讨论的所有命令仅在 Docker 容器停止时才有效。如果我们尝试删除正在运行的容器而不先停止它,我们将收到类似于以下内容的错误消息:

$ docker ps
 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
 f84692b27b0a centos:7 "/bin/bash" 59 seconds ago Up 58 seconds mycontainer
 $ docker rm mycontainer
 Error response from daemon:
 You cannot remove a running container f84692b27b0a18266f34b35c90dad655faa10bb0d9c85d73b22079dde506b8b5.
 Stop the container before attempting removal or force remove

刪除正在运行的 Docker 容器的一种方法是首先使用docker stop命令停止该容器,然后使用docker rm命令将其删除。


另一种方法是使用-f选项强行删除此类容器:

$ docker rm -f mycontainer
 mycontainer

我们可以使用-f选项删除单个 Docker 容器、多个 Docker 容器或所有 Docker 容器。

7. 结论

在本教程中,我们了解了为什么需要删除 Docker 容器。首先,我们学会了从 Linux 机器上删除一个容器。 docker rm和docker prune命令批量删除了 Docker 容器。


最后,我们研究了如何强制删除处于running状态的 Docker 容器。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *