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 评论