写点什么

Docker 清理的常用方法

  • 2021-03-16
  • 本文字数:1073 字

    阅读完需:约 4 分钟

Docker清理的常用方法

如果你使用 docker 进行大规模开发,但是没有清理策略,那么你的磁盘马上就会被填满,当你真的必须因为产品火爆而要立即交付一些东西时,你就无法交付。


当我们在计算机中运行一个进程时,一旦这个进程完成,所有东西都会随之销毁。容器是我们现在很多人操作的基础设施。一切东西都运行在一个容器上,旨在每个容器有一个进程。当进程完成,容器就退出。但它不会自行清理。

Docker 积累的东西

你需要注意这些


  • 已经停止的容器

  • 磁盘卷

  • 镜像

  • 网络


如果有足够的空间,你可能不太关心磁盘空间,但是网络也很重要。默认地,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
复制代码


但无论如何,本文的重点是清理。

使用 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)
复制代码

使用 docker-compose 清理

如果你使用 docker-compose 启动容器,我们有一种简单的方法来清理与特定 compose 文件关联的资源。


docker-compose down --volumes --rmi all --remove-orphans
复制代码


不幸的是,这个命令不会删除匿名卷,因此你必须处理这些匿名卷。

一条命令解决所有问题

docker 是短暂的,我们总是可以重新获取镜像,为了开发重新创建我们的数据库,或者这只是一个持续集成系统,我们可以删除一切。


docker system prune --all --force --volumes
复制代码


原文链接:


https://hanami.run/blog/posts/cleanup-docker/

2021-03-16 14:313493
用户头像

发布了 165 篇内容, 共 76.5 次阅读, 收获喜欢 343 次。

关注

评论

发布
暂无评论
发现更多内容

乘风人脸识别来了,企业能得到什么?

ToB行业头条

人工智能 人脸识别 百度大脑

为什么会出现零代码开发平台?

代码制造者

编程语言 低代码 企业信息化 零代码 编程开发

永续合约交易系统源码开发,合约交易所开发

13530558032

ARTS 挑战打卡第十四周(200810-200816)

老胡爱分享

ARTS 打卡计划

ARTS 挑战打卡第十五周(200817-200823)

老胡爱分享

ARTS 打卡计划

云中谁寄锦书来,免费生成一封七夕情书吧

郭旭东

阿里云 七夕 云效

百度联合发布全球最大中文自然语言处理数据共建计划“千言”

百度大脑

人工智能 百度 nlp 百度大脑

从“人居美学”的理念出发,木莲庄酒店很不一样

InfoQ_967a83c6d0d7

有它的加持,单机玩转百亿大数据不是梦!

易观大数据

Python3 单例模式

王坤祥

Python Singleton

CECBC区块链专委会副主任吴桐主讲成都市委宣传部区块链和数字

CECBC

区块链 数字货币

话题讨论 | 作为一名程序员,沟通能力是否重要?

InfoQ写作社区官方

程序员 写作平台 话题讨论

Tencent AI Lab 日常实习生招聘

InfoQ_d00afcd122a8

招聘

大数据思维与运用

石云升

大数据 数据建模 数据驱动

SpreadJS 纯前端表格控件应用案例:实验室信息化管理系统

葡萄城技术团队

游戏运营方法论

石云升

游戏化运营 运营创新

oeasy教你玩转linux010104灵魂之问whatis

o

SpreadJS 纯前端表格控件应用案例:PtLims云平台

葡萄城技术团队

青山不改,绿水长流

escray

学习 面试

PostgreSQL函数、索引和视图操作Demo展示

王坤祥

postgresql

用Emoji解释编程语言中的map、filter、reduce

王坤祥

Python Python PEP

3D渲染集群,你了解多少?

华为云开发者联盟

容器 华为云 集群 3D渲染 3D模型

兼具艺术情怀和舒适旅居体验,木莲庄做了什么

InfoQ_967a83c6d0d7

工作就是解决一个又一个问题

escray

学习 面试

阿里为什么推荐使用LongAdder,而不是volatile?

王磊

Java 性能 volatile

SpreadJS 纯前端表格控件应用案例:资料填报系统

葡萄城技术团队

Java中的volatile关键字

王坤祥

Java volatile

SpreadJS 纯前端表格控件应用案例:立信智能审计云平台(SACP)

葡萄城技术团队

Python中的global关键字的用法以及如何设置项目级的Global变量

陈磊@Criss

一键超频 双C Carry,普通用户如何挖潜英特尔十代酷睿?

E科讯

SpreadJS 纯前端表格控件应用案例:物业行业全面预算管理系统

葡萄城技术团队

Docker清理的常用方法_服务革新_Hanami_InfoQ精选文章