阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

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

关注

评论

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

Collections之 Arraylist源码解读(二)

知识浅谈

ArrayList 10月月更

【牛客刷题-算法】NC11 将升序数组转化为平衡二叉搜索树

清风莫追

数据结构 算法 二叉树 10月月更

架构师的十八般武艺:业务架构

agnostic

业务架构

写过自定义指令吗,原理是什么?

bb_xiaxia1998

Vue

能否手写vue3响应式原理-面试进阶

helloworld1024fd

JavaScript

React-Hooks源码深度解读

goClient1992

React

Spring Lombok 实体类死循环问题

HoneyMoose

React组件复用的发展史

夏天的味道123

React

React生命周期深度完全解读

夏天的味道123

React

什么是虚拟服务器?一共有多少种虚拟服务器?这篇文章带你扫盲!

wljslmz

10月月更 虚拟服务器

SAP 电商云 Spartacus UI 的响应式 UI 实现细节

汪子熙

前端 前端开发 web开发 10月月更 breakpoint

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

你要的react+ts最佳实践指南

xiaofeng

React

一个dubbo和springboot的兼容性问题

xiaoxi666

读懂React原理之调和与Fiber

xiaofeng

React

webpack配置完全指南

Geek_02d948

webpack

【LeetCode】检查二进制字符串字段Java题解

Albert

LeetCode 10月月更

细说react源码中的合成事件

flyzz177

React

React源码解读之任务调度

flyzz177

React

Redis开篇--非关系型数据库

Java学术趴

10月月更

Redis--SpringBoot整合Redis(包含工具类)

Java学术趴

10月月更

Vue实战必会的几个技巧

yyds2026

Vue

面试官:vue2和vue3的区别有哪些?

bb_xiaxia1998

Vue

Python基础(七) | 文件、异常以及模块详解

timerring

异常 Python Monad 10月月更

Vue响应式依赖收集原理分析-vue高级必备

yyds2026

Vue

使用 RxJs 实现一个支持 infinite scroll 的 Angular Component

汪子熙

前端开发 angular RXJS web开发 10月月更

带你实现react源码的核心功能

goClient1992

React

JWT 和 JJWT 还傻傻的分不清吗

HoneyMoose

【牛客刷题-算法】NC7 买卖股票的最好时机(一)

清风莫追

算法 动态规划 10月月更

【牛客刷题-算法】NC9 二叉树中和为某一值的路径(一)

清风莫追

算法 二叉树 10月月更

Redis中的数据类型以及常用方法

Java学术趴

10月月更

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