【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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:313359
用户头像

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

关注

评论 1 条评论

发布
用户头像
指令写错了,垃圾。。docker rm --force $(docker images --quiet)
2022-01-12 14:21
回复
没有更多了
发现更多内容

零基础入门AI?先来把机器学习捣鼓明白吧

博文视点Broadview

1行Python代码去除图片水印,网友:干干净净!

程序员晚枫

Python GitHub 开源 去水印 自动化办公

为什么补码是取反加1?

Dinfan

一个容器,但是一整个k8s集群

newbe36524

C# Docker Kubernetes

前端必会面试题

loveX001

JavaScript

用Docker搭建更酷的本地开发环境

致知Fighting

Java Docker Linux 后端 开发

被流量和热度裹挟,自媒体行业必须坚守职业道德

石头IT视角

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

手写JS函数的call、apply、bind

helloworld1024fd

JavaScript

FL Studio2023最新版本音乐编曲制作软件

茶色酒

FL Studio2023

2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i] = { a, b, c }表示,用户i报

福大大架构师每日一题

算法 rust 福大大

Vue.$nextTick的原理是什么-vue面试进阶

bb_xiaxia1998

Vue

vivo 自研Jenkins资源调度系统设计与实践

vivo互联网技术

运维 jenkins 资源调度

焕新启航,「龙蜥大讲堂」2023 年度招募来了!13 场技术分享先睹为快

OpenAnolis小助手

直播 开源社区 龙蜥大讲堂 机密计算 月度主题

KMP算法详解

javaadu

数据结构 字符串 KMP

2023我的前端面试小结

loveX001

JavaScript

前端react面试题(边面边更)

beifeng1996

React

实现一个简单的Database9(译文)

GreatSQL

sqlite greatsql greatsql社区

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

百度前端常考vue面试题(附答案)

bb_xiaxia1998

Vue

架构实战营-模块一作业

🐢先生

架构实战营

为什么用元空间替代永久代?

王磊

java面试

产品的可持续发展

ShineScrum捷行

产品 产品负责人 产品的可持续发展

A-Ops性能火焰图——适用于云原生的全栈持续性能监测工具

openEuler

Linux 运维 操作系统 定位 性能监控

前端一面常考手写面试题整理

helloworld1024fd

JavaScript

高级前端二面vue面试题(持续更新中)

bb_xiaxia1998

Vue

Shell分支语句

圆弧

分支 条件 shell脚本

三次握手与四次挥的问题,怎么回答?

loveX001

JavaScript

问:React的setState为什么是异步的?

beifeng1996

React

老生常谈React的diff算法原理-面试版

beifeng1996

React

前端react面试题指南

beifeng1996

React

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