请问该如何删除Docker镜像,容器和卷?

  • 回答 (6)
  • 关注 (0)
  • 查看 (232)

我在使用Docker时,累积了过多的未使用的图像,容器和数据卷,现在输出变得好混乱而且还消耗磁盘空间,我该怎么删除Docker镜像,容器和卷呢?

晓小峰哦晓小峰哦提问于
jyayfpvrHELLBOY回答于

删除卷

删除一个或多个特定卷 - Docker 1.9及更高版本:

使用此docker volume ls命令可找到要删除的卷名称。然后,您可以使用以下docker volume rm命令删除一个或多个卷:

列表:

docker volume ls

去掉:

docker volume rm volume_name volume_name

删除悬空卷 - Docker 1.9及更高版本

由于卷的位置与容器无关,因此在移除容器时,不会同时自动删除卷。当卷存在且不再连接到任何容器时,它称为悬空卷。要找到它们以确认您要删除它们,可以使用带过滤器的命令docker volume ls将结果限制为悬空卷。当您对列表感到满意时,可以用docker volume prune将它们全部删除:

列表:

docker volume ls -f dangling=true

去掉:

docker volume prune

删除容器及其容量

如果您创建了一个未命名的卷,则可以将其与具有该-v标志的容器同时删除。请注意,这仅适用于未命名的卷。成功删除容器后,将显示其ID。请注意,没有引用卷的删除。如果未命名,则会以静默方式从系统中删除。如果它被命名,它会默默地保持存在。

去掉:

docker rm -v container_name
女朝会电商回答于

删除所有已退出的容器

您可以使用以下docker ps -a状态定位容器并对其进行过滤:创建,重新启动,运行,暂停或退出。要查看已退出容器的列表,请使用-f标志根据状态进行过滤。当您确认要删除这些容器时,使用-q将ID传递给docker rm命令。

列表:

docker ps -a -f status=exited

去掉:

docker rm $(docker ps -a -f status=exited -q)

使用多个过滤器移除容器

可以通过使用附加值重复过滤器标志来组合Docker过滤器。这导致满足任一条件的容器列表。例如,如果要删除标记为Created的所有容器(运行具有无效命令的容器时可能导致的状态)或Exited,则可以使用两个过滤器:

列表:

docker ps -a -f status=exited -f status=created

去掉:

docker rm $(docker ps -a -f status=exited -f status=created -q)

根据图案移除容器

您可以使用docker ps和grep的组合找到与模式匹配的所有容器。当您对要删除的列表感到满意时,可以使用awkxargs提供ID给 docker rmi。请注意,这些实用程序不是由Docker提供的,并不一定适用于所有系统:

列表:

docker ps -a |  grep "pattern”

去掉:

docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

停止并移除所有容器

您可以查看系统上的容器docker ps。添加-a标志将显示所有容器。当您确定要删除它们时,可以添加-q标志以向 docker stopdocker rm命令提供ID:

列表:

docker ps -a

去掉:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
人生的旅途辣鸡前端回答于

删除Docker镜像

删除一个或多个特定图像

使用带有-a标志的命令docker images可以找到要删除的图像的ID。这将显示每个图像,包括中间图像层。当您找到要删除的图像时,可以将其ID或标记传递给docker rmi

列表:

docker images -a

去掉:

docker rmi Image Image

删除悬空图像

Docker图像由多个图层组成。悬空图像是与任何标记图像无关的图层。它们不再用于目的并占用磁盘空间。它们可以通过添加具有值dangling=true-f过滤器标志到docker images的命令来定位。如果您确定要删除它们,可以使用以下docker images purge命令:

注意:如果您在不标记图像的情况下构建图像,则图像将显示在悬空图像列表中,因为它与标记图像无关。您可以通过在构建时提供标记来避免这种情况,并且可以使用docker tag命令追溯标记图像。

列表:

docker images -f dangling=true

去掉:

docker images purge

删除所有图像

通过添加-adocker images命令,可以列出系统上的所有Docker映像。一旦确定要全部删除它们,就可以添加-q标志以将图像ID传递给docker rmi

列表:

docker images -a

去掉:

docker rmi $(docker images -a -q)
不吃貓的鱼oo回答于

删除容器

删除一个或多个特定容器

使用带有该-a标志的docker ps命令可以找到要删除的容器的名称或ID:

列表:

docker ps -a

去掉:

docker rm ID_or_Name ID_or_Name

退出时取出容器

如果您知道何时创建容器,一旦完成就不想保留它,您可以运行docker run --rm以在退出时自动删除它。

运行和删除:

docker run --rm image_name
最爱开车啦互联网的敏感者回答于

补充一下删除Docker镜像的一种情况:

根据图案删除图像

你可以使用组合模式docker imagesgrep找到相匹配的图像。一旦您满意,您可以通过使用awk来删除它们docker rmi。请注意,这些实用程序不是由Docker提供的,并不一定适用于所有系统:

列表:

docker images -a |  grep "pattern"

去掉:

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
software微软、谷歌、腾讯、阿里、百度……回答于

清除所有未使用或悬空的图像,容器,卷和网络的话,Docker提供了一个命令,可以清理悬空的任何资源(图像,容器,卷和网络)(与容器无关):

docker system prune

要另外删除任何已停止的容器和所有未使用的图像(不只是悬空图像),请将该-a标志添加到命令:

docker system prune -a

扫码关注云+社区

领取腾讯云代金券