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

uujelgoq  于 2023-04-11  发布在  Docker
关注(0)|答案(4)|浏览(158)

当我运行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

我如何知道哪些图像可以安全地删除?
我的注意力是把它们都移走,但我不确定在这样做之前我是否应该更小心。

flmtquvp

flmtquvp1#

您可以使用docker image prune来删除“悬空”图像;那些没有标记的(例如<none>不会被任何运行的容器引用。
我发现docker image prune -a更有用。它将删除任何未被运行容器使用的映像。从这个意义上说,prune -a是一个清理步骤,可以在环境正确运行后执行。

hivapdat

hivapdat2#

被称为dangling的图像可以安全地删除。这些图像没有标签。当图像的新构建出现时,新图像会使用标签,而dangling图像则使用<none>:<none>标签。
悬挂图像可以使用docker images --filter "dangling=true"列出,也可以通过运行docker image prune删除。

sy5wg1nm

sy5wg1nm3#

这个命令对我也有用。

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

ss2ws0br4#

清除所有未使用或挂起的映像、容器、卷和网络:

清理所有悬空(未与容器关联)的资源(映像、容器、卷和网络):

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)

Original article on digitalocean

相关问题