点击上方 "编程技术圈"关注, 星标或置顶一起成长
后台回复“大礼包”有惊喜礼包!
每日英文
Be yourself, don\'t change for anyone. If they don\'t like you at your worst, then they don\'t deserve you at your best.
勇敢的做自己,不要为任何人而改变。如果他们不能接受最差的你,也不配拥有最好的你。
每日掏心话
生死转换于倾刻,穷人与富人同行,少年与老人携手,恩人与仇人同去,平民与官员共趋,抹平了恩怨情仇,埋葬了利禄功名。
责编:乐乐 | 来自:架构头条
编程技术圈(ID:study_tech)第 1174 次推文
正文
作者 | Hanami
译者 | 张健欣
策划 | 万佳
如果你使用 docker 进行大规模开发,但是没有清理策略,那么你的磁盘马上就会被填满,当你真的必须因为产品火爆而要立即交付一些东西时,你就无法交付。
当我们在计算机中运行一个进程时,一旦这个进程完成,所有东西都会随之销毁。容器是我们现在很多人操作的基础设施。一切东西都运行在一个容器上,旨在每个容器有一个进程。当进程完成,容器就退出。但它不会自行清理。
1Docker 积累的东西
你需要注意这些:
已经停止的容器
磁盘卷
镜像
网络
如果有足够的空间,你可能不太关心磁盘空间,但是网络也很重要。默认地,Docker 使用 bridge 网络,它的极限是 31 个网络。当达到极限时,你会看到下面这条消息:
could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
如果你是一个为每个项目创建一个网络的 docker-compose 重度用户,就会发生这种情况。你可以通过设置一个自定义--subnet
子网来解决问题,例如:
docker network create dada --subnet 192.167.11.0/24
但无论如何,本文的重点是清理
2使用 docker 清理
清理已经停止的容器
docker rm -v $(docker ps --all --quiet --filter 'status=exited')
这会找到所有处于已退出(exited)状态的容器,一行一个地输出它们的 ID,以便我们可以将它提供给其它 shell 指令。
我们使用docker rm -v
来删除任何匿名卷(没有显式名称的卷)。
清理磁盘卷
上面的命令应该删除与该容器关联的卷。如果你手动创建卷,并要删除任何未被使用的卷:
docker volume rm $(docker volume ls --quiet --filter 'dangling=true')
清理镜像
通常删除所有 Docker 镜像是安全的。我们可以在需要的时候按需获取。通常在一个镜像被清理后,构建时间会更长,因为 docker 守护进程需要花时间再次下载镜像
搜索后端架构师公众号回复“架构整洁”,送你一份惊喜礼包。
docker rm --force $(docker images --quiet)
这里,我们使用了--force
来强制删除镜像,即使一个容器正在使用那个镜像。我们可以以后再获取这个镜像。
清理网络
这很简单。我们可以删除任何网络,它会在之后按需重建。
docker network rm $(docker network ls --quiet)
3使用 docker-compose 清理
如果你使用 docker-compose 启动容器,我们有一种简单的方法来清理与特定 compose 文件关联的资源。
docker-compose down --volumes --rmi all --remove-orphans
不幸的是,这个命令不会删除匿名卷,因此你必须处理这些匿名卷。
4一条命令解决所有问题
docker 是短暂的,我们总是可以重新获取镜像,为了开发重新创建我们的数据库,或者这只是一个持续集成系统,我们可以删除一切。
docker system prune --all --force --volumes
原文链接:
https://hanami.run/blog/posts/cleanup-docker/
PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
猜你还想看
它们把色情版 “微信” 的底裤都给挖出来了,网友: 草率了。。。
BAT等大厂Java面试经验总结
别找了,想获取 Java大厂面试题学习资料
扫下方二维码回复「手册」就好了
?