Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Docker 环境清理的常用方法

Docker 环境清理的常用方法

作者头像
xcbeyond
修改于 2021-04-12 02:53:56
修改于 2021-04-12 02:53:56
58000
代码可运行
举报
文章被收录于专栏:技术那些事技术那些事
运行总次数:0
代码可运行

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

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

Docker 积累的东西

你需要注意这些:

  • 已经停止的容器
  • 磁盘卷
  • 镜像
  • 网络

如果有足够的空间,你可能不太关心磁盘空间,但是网络也很重要。默认地,Docker 使用 bridge 网络,它的极限是 31 个网络。当达到极限时,你会看到下面这条消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

如果你是一个为每个项目创建一个网络的 docker-compose 重度用户,就会发生这种情况。你可以通过设置一个自定义--subnet子网来解决问题,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network create dada --subnet 192.167.11.0/24

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

使用 docker 清理

清理已经停止的容器
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker rm -v $(docker ps --all --quiet --filter 'status=exited')

这会找到所有处于已退出(exited)状态的容器,一行一个地输出它们的 ID,以便我们可以将它提供给其它 shell 指令。

我们使用docker rm -v来删除任何匿名卷(没有显式名称的卷)。

清理磁盘卷

上面的命令应该删除与该容器关联的卷。如果你手动创建卷,并要删除任何未被使用的卷:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume rm $(docker volume ls --quiet --filter 'dangling=true')

清理镜像

通常删除所有 Docker 镜像是安全的。我们可以在需要的时候按需获取。通常在一个镜像被清理后,构建时间会更长,因为 docker 守护进程需要花时间再次下载镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker rm --force $(docker images --quiet)

这里,我们使用了--force来强制删除镜像,即使一个容器正在使用那个镜像。我们可以以后再获取这个镜像。

清理网络

这很简单。我们可以删除任何网络,它会在之后按需重建。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network rm $(docker network ls --quiet)

使用 docker-compose 清理

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose down --volumes --rmi all --remove-orphans

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

一条命令解决所有问题

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker system prune --all --force --volumes

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker 空间使用分析与清理
摘要: 用户在使用 Docker 部署业务一段时间后,可能会发现宿主节点的磁盘容量持续增长,甚至将磁盘空间耗尽进而引发宿主机异常,进而对业务造成影响。 本文先对 Docker 的空间分析与清理进行说明,然后对容器的磁盘容量限制与使用建议做简要说明。 # 典型问题场景 用户发现 Docker 宿主机的磁盘空间使用率非常高。通过 du 逐层分析,发现是 Volume 或 overlay2 等目录占用了。 用户在使用 Docker 部署业务一段时间后,可能会发现宿主节点的磁盘容量持续增长,甚至将磁盘空间耗尽进而引
老七Linux
2018/05/31
2.5K0
Docker | 使用dockerfile生成镜像,清理docker空间
我个人使用的是单核2G的云服务器,用了快三年了,内存、cpu严重吃紧,所以就尝试了清理docker使用空间,主要是删除未使用过的镜像、容器、数据卷、网络命令,具体如下:
甜点cc
2022/10/24
1.2K0
Docker | 使用dockerfile生成镜像,清理docker空间
性能环境之docker操作指南2(全网最全)
通过容器创建本地镜像. 可自定义tag,如docker commit dc806ee0bf86 web:v1 不指定tag的情况下默认tag为latest
高楼Zee
2019/07/17
6190
Docker 快速入门、核心概念和常用指令
大家好,我是老田。周末有朋友问起Docker相关的问题。今天就来跟大家分享Docker 快速入门、核心概念和常用指令。
田维常
2021/11/10
5360
使用docker来编排Web应用
使用docker可以轻松构建一个项目并运行,然而在真实的使用场景中,我们的项目并非是单一的,而是多个项目相互依赖组成一个web应用。
神奇的程序员
2023/11/20
4890
使用docker来编排Web应用
使用docker来编排Web应用
使用docker可以轻松构建一个项目并运行,然而在真实的使用场景中,我们的项目并非是单一的,而是多个项目相互依赖组成一个web应用。
老K博客
2024/03/30
1680
使用docker来编排Web应用
关于Docker服务磁盘空间清理的总结
Docker的镜像(image)、容器(container)、数据卷(volume), 都是由daemon托管的。 因此,在需要清理时,也需要使用其自带的手段。
用户8851537
2021/07/27
2.9K0
附003.Docker Compose命令详解
-f参数为可选,也可使用-f提供多个配置文件,当使用多个文件时,Compose会将它们合并为一个配置。Compose按照提供文件的顺序构建配置。后续文件覆盖并添加到其前任文件中。
木二
2019/07/26
2.2K0
【Docker 系列】docker 学习十一,docker 总结和面试题整理
Docker 引擎统一了基础设施环境,包括硬件配置,操作系统的版本,运行时环境的异构
阿兵云原生
2023/02/16
4870
Docker 基础与实践
作为一个后端开发,我刚开始工作的时候其实主要都是在本地调试的,并没有怎么了解过 Docker 的相关使用。直到后来开始接触较为复杂的底层链开发,因为链或其相关工具的依赖关系比较复杂,也涉及很多版本冲突问题,在本机或服务器上每次需要配置复杂的环境,且每次重启后很多服务与配置都需要重新部署,繁琐且容易出现一些莫名的跨平台错误。
pseudoyu
2023/04/11
9260
【Docker】专题二:Docker 常用命令
行者Sun
2024/09/02
1170
【Docker】专题二:Docker 常用命令
如何快速清理 docker 资源
如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无
程序你好
2018/07/20
1.5K0
15 Docker 总结
Lemon黄
2023/12/15
1770
15 Docker 总结
docker-compose常用命令
docker-compose [-f …] [options] [COMMAND] [ARGS…]
问天丶天问
2019/08/29
1.6K0
Docker-Compose的一些常用命令
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。 Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。 Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
javascript.shop
2019/09/04
19.1K0
爬虫+反爬虫+js代码混淆
命令选项如下: -f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。 -p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。 -x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9+版本) -x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本) -verbose输出更多调试信息 -v,–version打印版本并退出
李昂君
2022/01/04
3.7K0
Docker 总结 ubuntu
假设路径分隔符为/,第一个参数为SRC_PATH,第二个参数为DEST_PATH,行为如下:
yiyun
2022/04/01
2.2K0
Docker 总结  ubuntu
如何清理Docker容器、镜像、数据卷和网络
Docker是一个开放源代码的容器化平台,可让您快速构建,测试和部署应用程序,而且是可以在任何地方运行的便携式容器。
用户5166556
2023/03/18
1.7K0
如何清理Docker容器、镜像、数据卷和网络
Docker清理占用的磁盘空间
摘要:用了 Docker,好处挺多的,但是有一个不大不小的问题,它会一不小心占用太多磁盘,这就意味着我们必须及时清理。
用户1437675
2019/04/27
3.1K0
2.Docker学习之基础使用
学习参考:https://yeasy.gitbooks.io/docker_practice/repository/registry.html
全栈工程师修炼指南
2020/10/23
2.4K0
2.Docker学习之基础使用
相关推荐
Docker 空间使用分析与清理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文