安卓系统

如何删除Docker容器,映像,卷和网络

Docker入门系列基础教程(二)

Docker入门系列基础教程(二)

目录:

Anonim

Docker允许您以可在几乎任何地方运行的可移植的自给自足的容器快速构建,测试和部署应用程序。

除非明确指示这样做,否则Docker不会删除未使用的对象,例如容器,图像,卷和网络。 使用Docker时,您可以轻松地累积大量未使用的对象,这些对象会占用大量磁盘空间,并使Docker命令产生的输出混乱。

本指南充当“备忘单”,以帮助Docker用户保持系统有序,并通过删除未使用的Docker容器,映像,卷和网络来释放磁盘空间。

删除所有未使用的对象

docker system prune 命令将删除所有停止的容器,所有悬挂的映像以及所有未使用的网络:

docker system prune

系统将提示您继续,请使用 -f --force 标志绕过提示。

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cache Are you sure you want to continue?

docker system prune --volumes

WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all volumes not used by at least one container - all dangling images - all build cache Are you sure you want to continue? y

移除Docker容器

停止使用Docker容器时,不会自动删除它们,除非使用 --rm 标志启动容器。

取出一个或多个容器

要删除一个或多个Docker映像,请使用 docker container rm 命令,后跟要删除的容器的ID。

您可以通过将 -a 标志传递给 docker container ls 命令来获取所有容器的列表:

docker container ls -a

输出应如下所示:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3f2ff51cab centos "/bin/bash" 2 months ago Created competent_nightingale cd20b396a061 solita/ubuntu-systemd "/bin/bash -c 'exec …" 2 months ago Exited (137) 2 months ago systemd fb62432cf3c1 ubuntu "/bin/bash" 3 months ago Exited (130) 3 months ago jolly_mirzakhani

知道要删除的容器的 CONTAINER ID 后,将其传递给 docker container rm 命令。 例如,要删除上面输出中列出的前两个容器,请运行:

docker container rm cc3f2ff51cab cd20b396a061

Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.

取出所有停止的容器

在执行删除命令之前,您可以获取将使用以下命令删除的所有未运行(停止)容器的列表:

docker container ls -a --filter status=exited --filter status=created

要删除所有停止的容器,请使用 docker container prune 命令:

docker container prune

系统将提示您继续,请使用 -f --force 标志绕过提示。

WARNING! This will remove all stopped containers. Are you sure you want to continue? y

使用过滤器取出容器

docker container prune 命令允许您根据条件使用过滤标志 --filter 删除容器。

在撰写本文时,当前支持的过滤器为and和 label 。 通过使用多个 --filter 标志,可以使用多个过滤器。

例如,要删除所有在12小时前创建的图像,请运行:

docker container prune --filter "until=12h"

停止并取出所有容器

您可以使用 docker container ls -aq 命令获取系统上所有Docker容器的列表。

要停止所有正在运行的容器,请使用 docker container stop 命令,后跟所有容器ID的列表。

docker container stop $(docker container ls -aq)

一旦所有容器停止运行,您可以使用 docker container rm 命令以及容器ID列表将其删除。

docker container rm $(docker container ls -aq)

删除Docker映像

删除一个或多个图像

要删除一个或多个Docker映像,请使用 docker images ls 命令查找要删除的映像的ID。

docker image ls

输出应如下所示:

REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 75835a67d134 7 days ago 200MB ubuntu latest 2a4cca5ac898 2 months ago 111MB linuxize/fedora latest a45d6dca3361 3 months ago 311MB java 8-jre e44d62cf8862 3 months ago 311MB

找到要删除的 IMAGE ID ,将其 IMAGE ID 传递给 docker image rm 命令。 例如,要删除上面运行中输出中列出的前两个图像:

docker image rm 75835a67d134 2a4cca5ac898

Error response from daemon: conflict: unable to remove repository reference "centos" (must force) - container cd20b396a061 is using its referenced image 75835a67d134

删除悬空的图像

Docker提供了一个 docker image prune 命令,可用于删除悬空的和未使用的映像。

悬空图像是未标记且未被任何容器使用的图像。 要删除悬空的图像,请输入:

docker image prune

系统将提示您继续,请使用 -f --force 标志绕过提示。

WARNING! This will remove all dangling images. Are you sure you want to continue? y 删除悬空的图像时,如果未标记由您生成的图像,它们也将被删除。

删除所有未使用的图像

要删除所有现有容器未引用的所有图像,而不仅仅是悬空的容器,请使用带有 -a 标志的 prune 命令:

docker image prune -a

WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? y

使用过滤器删除图像

使用 docker image prune 命令,您还可以使用过滤标志 --filter 根据特定条件删除图像。

在撰写本文时,当前支持的过滤器为and和 label 。 通过使用多个 --filter 标志,可以使用多个过滤器。

例如,要删除所有在12个小时前创建的图像,请运行:

docker image prune -a --filter "until=12h"

删除Docker卷

删除一个或多个卷

要删除一个或多个Docker卷,请使用 docker volume ls 命令查找要删除的卷的ID。

docker volume ls

输出应如下所示:

DRIVER VOLUME NAME local 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163 local terano

找到要删除的卷的 VOLUME NAME 后,将它们传递给 docker volume rm 命令。 例如,要除去上面输出中列出的第一个卷,请运行:

docker volume rm 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163

Error response from daemon: remove 4e12af8913af888ba67243dec78419bf18adddc3c7a4b2345754b6db64293163: volume is in use -

删除所有未使用的卷

要删除所有未使用的卷,请使用 docker image prune 命令:

docker volume prune

系统将提示您继续,请使用 -f --force 标志绕过提示。

WARNING! This will remove all local volumes not used by at least one container. Are you sure you want to continue?

删除Docker网络

删除一个或多个网络

要删除一个或多个Docker网络,请使用 docker network ls 命令查找要删除的网络的ID。

docker network ls

输出应如下所示:

NETWORK ID NAME DRIVER SCOPE 107b8ac977e3 bridge bridge local ab998267377d host host local c520032c3d31 my-bridge-network bridge local 9bc81b63f740 none null local

找到要删除的网络后,将其 NETWORK ID 传递给 docker network rm 命令。 例如,要删除名称为 my-bridge-network 运行:

docker network rm c520032c3d31

Error response from daemon: network my-bridge-network id 6f5293268bb91ad2498b38b0bca970083af87237784017be24ea208d2233c5aa has active endpoints

删除所有未使用的网络

使用 docker network prune 命令删除所有未使用的网络。

docker network prune

系统将提示您继续,请使用 -f --force 标志绕过提示。

WARNING! This will remove all networks not used by at least one container. Are you sure you want to continue?

使用过滤器删除网络

使用 docker network prune 命令,您可以使用过滤标志 --filter 根据条件删除网络。

在撰写本文时,当前支持的过滤器为and和 label 。 通过使用多个 --filter 标志,可以使用多个过滤器。

例如,要删除所有在12个小时前创建的网络,请运行:

docker network prune -a --filter "until=12h"

结论

在本指南中,我们向您展示了一些用于删除Docker容器,映像,卷和网络的常用命令。

您还应该查看官方Docker文档。

码头工人