GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Docker 清理的常用方法

2021 年 3 月 16 日

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 年 3 月 16 日 14:311538
用户头像

发布了 126 篇内容, 共 41.7 次阅读, 收获喜欢 231 次。

关注

评论

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

Flink 计算 PV UV

shengjk1

flink flink 实战

硬件工程师必备,常用元器件封装速查表

不脱发的程序猿

28天写作 电路设计 3月日更 元器件封装速查表 电子设计

上帝视角掌管城市动向!智慧园区驱动城市数字化转型

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区

Java学习笔记——实体类(ENTITY,VO,DTO,BO)

棉花糖

Java

一文搞懂 FlinkSQL函数 LAST_VALUE 的原理

shengjk1

flink flink sql flink 源码

寻找被遗忘的勇气(二十三)

Changing Lin

3月日更

如何在Python中实现Round函数?

华为云开发者社区

Python 函数 Numpy Round 舍入函数

java deep vs shallow copies

shengjk1

Java deep copy shallow cop

FlinkSQL 平台

shengjk1

flink flink sql flink sql 平台

Veema 寄来的新书

吴威

vmware 容灾 备份 veeam esxi

智慧平安社区综合管理系统开发,江西赣州老旧小区改造解决方案

WX13823153201

Python-计算机视觉-OpenCV-调色板

Aldeo

Python OpenCV

人工智能能和人类辩论了;《云网产业发展白皮书》发布

京东科技开发者

人工智能

AIOT技术大起底:别人开发“软件”,海尔智家开发“生活”

DT极客

图解TCP的通信机制

零一

TCP 网络

4层板到12层板叠层经典设计方案

不脱发的程序猿

28天写作 电路设计 3月日更 PCB PCB布局

企业数字化转型,营销技术驱动超级增长!

博文视点Broadview

【IstioCon 2021】如何在Istio中进行源地址保持?

华为云原生团队

开源 云原生 istio 华为云 服务网格

万众瞩目的EGG Network,备受期待的New-DeFi自治共识论坛在海口闭幕

币圈那点事

区块链

一文搞懂 Flink 中的锁

shengjk1

flink flink 锁

带你全面认识CMMI V2.0(三)——实践域

渠成CMMI

CMMI

Dubbo的设计理念原来就藏在这三张图中

中间件兴趣圈

dubbo RPC

快速使用Vue3最新的15个常用API(1W5+字详解,建议收藏)

零一

vue.js 前端 Vue3

阿里一战封神,百万人跪求的Java面试手册终于开源;

Java架构师迁哥

一文搞懂Flink SQL执行过程

shengjk1

flink flink源码 flink sql flink sql 执行过程

Flink 计算 TopN

shengjk1

flink flink 实战 flink topN

到底什么是Event Loop?那就来了解一下JavaScript分别在浏览器和Node环境下的运行机制吧

零一

JavaScript 前端

Python OpenCV 图像处理二值化,取经之旅第 7 天

梦想橡皮擦

3月日更

JVM G1GC的算法与实现

Yano

Java JVM GC G1GC

一文搞懂 FlinkSQL 的 KafkaSource

shengjk1

flink flink源码 flink sql

Flink 提交作业运行的各种模式总结

shengjk1

flink flink 执行

Docker清理的常用方法-InfoQ