我在这里看到很多请求/问题:https://github.com/docker/docker -registry / labels / delete,但没有找到一个好的/流行的解决方案。
那么,有没有工具或技术可以帮助我做到这一点?
此外,您在执行操作时有什么最佳做法吗?
#1 楼
我在Spotify / docker-gc祝你好运。它可以从cron或作为docker容器运行。
一个简单的Docker容器和图像垃圾收集脚本。
退出更多的容器删除了一个小时前的图像。
删除不属于该容器的图像。
评论
乍一看,似乎在所有bash内容之后,或多或少都来自@rombob答案的单线子集。是真的,还是我缺少的docker-gc中有一些“智能”?
– AnoE
17年11月16日在14:39
Op链接并询问有关如何从注册表中清除的问题,但是docker-gc不会从注册表中清除,它只是从本地计算机中清除。我猜OP真的在问如何在当地清理
– dalore
18年4月19日在10:53
Docker-gc的页面现在建议改为使用docker system prune。但是我没有找到如何从Docker的修剪中移除一些图像。有没有办法用docker system prune排除一些映像?
–亚历山大·阿特缅科(Alexander Artemenko)
19-09-4在9:24
#2 楼
不能称之为最佳实践,但这是cron触发的我们使用的方法,很高兴看到更好的建议。echo "safely removing untagged images"
docker rmi $(docker images | awk '/<none>/{print }')
echo "safely removing stopped containers"
docker rm $(docker ps -a -q)
echo "safely removing old containers"
docker ps -a | awk '/weeks ago|months ago|days ago/{print }' | xargs --no-run-if-empty docker rm
echo "safely removing old images"
docker images | awk '/weeks ago|months ago|days ago/{print }' | xargs --no-run-if-empty docker rmi
echo "safely removing old volumes, custom rebuild of martin/docker-cleanup-volumes image"
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(readlink -f /var/lib/docker):/var/lib/docker --rm example/docker-cleanup-volumes
echo "native cleanup Docker => 12"
docker system prune -f
评论
请不要链接grep和awk,在awk命令`regex {command}`之前做同样的过滤器
–滕西拜
17 Mar 27 '17 at 19:14
@Tensibai让AWK巫师高兴的任何事情:)
–菱形
17 Mar 27 '17 at 20:32
以防万一,这不仅是徒劳的,还可以节省流程生成和大量上下文更改:)在这里并没有太大变化,但是任何提倡它的场合都是很好的:)
–滕西拜
17 Mar 27 '17 at 20:53
@Tensibai绝对是个好习惯,随着时间的流逝,回报会浪费我们很多时间和金钱:)
–菱形
17 Mar 27 '17 at 20:57
特别是当您解析/格式化数十亿行的日志文件以准备R输入时:)在这里,我希望不会有几十行。
–滕西拜
17 Mar 27 '17 at 20:59
#3 楼
在我的本地计算机(mac)上,我有一个小脚本,发现我定期运行,可以清理掉所有多余的图像clean-docker-for-mac.sh对于我的服务器,我运行meltwater / docker -cleanup会定期清理退出的容器并删除未使用的映像和卷。
我在Codemason上的工作使用了很多不同的Docker映像,这些脚本对我来说是必要的。享受吧!
#4 楼
docker system prune --volumes
从v17开始就是这样做的方法。此处的文档
评论
您是否在询问如何清理注册表? (这是您提供的链接和问题),但是可接受的答案不是清除注册表,而是清除本地泊坞窗。