NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论 1 条评论

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

青藤:业务迁移到容器云上的6个注意事项

青藤云安全

以搭建Vuepress文档为例,展示用VSCode来远程开发

为自己带盐

vscode 1月月更 远程开发

美容院CRM系统解决方案

低代码小观

CRM 客户关系管理 CRM系统 客户关系管理系统 企业管理工具

26个主流机器学习算法的实现,获4万好评,这本机器学习宝典终于来了!

图灵教育

机器学习 代码 公式

LabVIEW感兴趣区域分析(实战篇—1)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 感兴趣区域分析 ROI

敏捷真的是开发者的绊脚石吗?

LigaAI

敏捷开发

手淘 Android 帧率采集与监控详解

阿里巴巴终端技术

android 性能优化 移动开发 客户端

不听话的 Container

百瓶技术

flutter 布局与组件

使用 Amazon Redshift ML 构建多分类模型

亚马逊云科技 (Amazon Web Services)

存储

在Amazon SageMaker中灵活使用多种存储服务

亚马逊云科技 (Amazon Web Services)

存储

通用数据保护条例的监管下,你的数据湖“断舍离”了吗?

亚马逊云科技 (Amazon Web Services)

存储

活动预告 | OpenMLDB Meetup No.1

第四范式开发者社区

人工智能 机器学习 开源

应用营销策略知多少?

坚果

产品设计 1月月更

Amazon SageMaker Data Wrangler 简化数据准备过程,助力机器学习

亚马逊云科技 (Amazon Web Services)

存储

常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源

云智慧AIOps社区

安全 监控宝 监控工具 开源软件 运维管理

浅谈云上攻防——云服务器攻防矩阵

腾讯安全云鼎实验室

云原生 云上安全攻防

【网络安全】红蓝攻防:shellcode的分析

H

网络安全 WEB安全

使用 esbuild 来打包一个 React 库

CRMEB

云原生训练营毕业总结

白开水又一杯

云原生

Redis 使用 List 实现消息队列有哪些利弊?

码哥字节

redis 消息队列 Redis 6.0 1月月更

workflow 之 Luigi 3.x 基本用法(qbit)

qbit

工作流 pipeline workflow 数据流

知乎基于Palo的用户画像和实时数仓构建实践

百度开发者中心

大数据

VuePress 博客优化之添加数据统计功能

冴羽

JavaScript Vue 前端 博客 vuepress

如何用建木CI构建/发布建木Hub节点定义版本

Jianmu

DevOps CI/CD 开源项目 发送邮件 检查系统服务

如何利用Spot,成本与稳定同时兼得

jinjin

spot 热池 spotmax

Office2021 和Microsoft 365分不清?这样选最划算

淋雨

Office 365

龙蜥的朋友圈又大了!知名数据库产品服务商南大通用加入社区

OpenAnolis小助手

开源 社群

优化服务器存储架构——Amazon EBS io2 Block Express正式推出!

亚马逊云科技 (Amazon Web Services)

存储

【量化】量化交易入门系列4:经典的量化交易策略(下)

恒生LIGHT云社区

量化策略 量化投资 量化交易 量化

C++太难学,怎么破?这本书给你指点迷津!

图灵教育

c++ 编程 入门

SphereEx 创始人张亮荣获『2021 年度海纳奖——分布式数据库十佳实践人物』

SphereEx

数据库 开源 ShardingSphere SphereEx 海纳奖

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