如何判断哪些Docker图像可以安全删除?

时间:2017-12-12 01:46:42

标签: docker containers docker-image

当我运行docker image ls时,我看到了这个

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
<none>                         <none>              c012c1e2eb45        4 hours ago         2.59GB
<none>                         <none>              a2013debf751        5 hours ago         2.59GB
<none>                         <none>              0bbb2f67083c        5 hours ago         2.59GB
<none>                         <none>              af18b070061b        29 hours ago        182MB
<none>                         <none>              186a8fac122e        35 hours ago        1.67GB
<none>                         <none>              0f90c1bb12a3        35 hours ago        182MB
<none>                         <none>              b94009e70416        13 days ago         631MB
<none>                         <none>              880d8e6713cf        2 weeks ago         631MB
b/2018-external                latest              128d208a6c83        2 weeks ago         207MB
2018-external                  latest              128d208a6c83        2 weeks ago         207MB
b/2018-web                     <none>              128d208a6c83        2 weeks ago         207MB
nginx                          latest              9e7424e5dbae        2 weeks ago         108MB
node                           8-alpine            4db2697ce114        4 weeks ago         67.7MB
b_web                          latest              d5a0ea011c0a        5 weeks ago         182MB
<none>                         <none>              957c22ababec        5 weeks ago         182MB
docker_web                     latest              70b443ed0495        5 weeks ago         182MB
docker_app                     latest              509d58a68224        5 weeks ago         756MB
b_app                          latest              509d58a68224        5 weeks ago         756MB
mysql                          5.6                 96dc914914f5        5 weeks ago         299MB
mysql                          latest              5fac85ee2c68        8 weeks ago         408MB
redis                          latest              1fb7b6c8c0d0        2 months ago        107MB
alpine                         3.6                 76da55c8019d        2 months ago        3.97MB
nginx                          1.13.3-alpine       ba60b24dbad5        5 months ago        15.5MB
keymetrics/pm2-docker-alpine   6                   4a09bfc067d6        5 months ago        75.3MB
dockercloud/cli                latest              051238cd0a37        6 months ago        64.2MB
andrewmclagan/nginx-hhvm       latest              ec6cc741eb0e        7 months ago        580MB
nginx                          1.10                0346349a1a64        8 months ago        182MB
php                            7.0.8-fpm           75b880f3a420        17 months ago       375MB
tutum/haproxy                  latest              33bc771bec1e        18 months ago       232MB
php                            7.0.4-fpm           81d7a2fdc6dc        21 months ago       494MB

我如何知道哪个图像可以安全删除?

我的注意力是将它们全部删除,但我不确定在这之前我是否应该更加满意。

4 个答案:

答案 0 :(得分:2)

您可以使用docker image prune删除&#34;悬空&#34;图片;那些未标记的内容(例如<none>未被任何正在运行的容器引用。

我发现docker image prune -a更有用。它将删除正在运行的容器未使用的任何图像。在这种意义上,修剪-a是一个清理步骤,您可以在环境正常运行后执行该操作。

答案 1 :(得分:1)

被称为悬空的图像可以安全移除。那些是没有标签的图像。当出现新的图像构建并且新图像使标记留下带有<none>:<none>的悬空图像时,会产生它们 标签

可以使用docker images --filter "dangling=true"列出悬空图片,并可以通过运行docker image prune删除。

答案 2 :(得分:0)

这个命令对我也有用。

docker rmi $(docker images -f "dangling=true" -q)

答案 3 :(得分:0)

清除所有未使用或悬挂的图像,容器,卷和网络:

清理悬空(不与容器关联)的所有资源(图像,容器,卷和网络):

docker system prune

删除所有停止的容器和所有未使用的图像(不仅仅是悬空的图像):

docker system prune -a

删除一个或多个特定图像: docker rmi Image Image

删除悬空的图像: docker images purge

根据图案删除图像: docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

删除所有图像: docker rmi $(docker images -a -q)

删除一个或多个特定容器: docker rm ID_or_Name ID_or_Name 在退出时删除容器(运行并删除): docker run --rm image_name

删除所有退出的容器: docker rm $(docker ps -a -f status=exited -q)

使用多个过滤器删除容器: docker rm $(docker ps -a -f status=exited -f status=created -q)

停止并删除所有容器:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

原始文章:digitalocean