在Docker的日常使用中,我们或许偶尔遇到下面这些情况:

1

2

3

4

5

6

7

8

$ docker-compose ps

[27142] INTERNAL ERROR: cannot create temporary directory!

$ df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 489M 132K 488M 1% /dev

tmpfs 497M 0 497M 0% /dev/shm

/dev/xvda1 7.8G 7.7G 0 100% /

这时候,我们大概明白了,大概是Docker把磁盘占满了。这时就需要我们去做一些清理了,这篇博客主要总结如下一些有效的Docker清理操作。

找到dockers数据与进程;

删除未使用的镜像,容器,卷和网络;

重置docker

限制日志大小

其他相关操作

在了解这些之前,我相信你已经对下面的一些词汇已经有一定的了解。

image: 一个只读模版,可以用来创建container。如,一个包含ubuntu系统的镜像。

container: 从镜像创建的运行实例。可以用docker命令去控制这些container。

volume: docker数据持久化。

dangling: 未使用的image。

network: 连接docker容器服务。

查看Docker的磁盘使用情况

使用docker system df即可查看:

1

2

3

4

5

$ docker system df

TYPE TOTAL ACTIVE SIZE RECLAIMABLE

Images 13 7 6.4 GB 7.2 MB (88%)

Containers 8 0 42.85 MB 42.85 MB (100%)

Local Volumes 5 5 3.541 GB 0 B (0%)

如上,镜像占了6.4GB, 容器占了42.85 MB, 数据卷占了3.541 GB。 了解基本占用后,我们就可以用下面介绍的命令进行针对性的清理了。

找到Dockers数据与进程

要清理docker,就要知道docker数据在哪,具体有哪些docker进程。

docker images 列出docker镜像;

docker ps 列出docker容器;

docker volume ls 列出docker数据卷;

docker network ls 列出docker网络;

docker info 列出容器镜像的数量以及一些docker 安装等系统信息。

清除未使用的数据与进程

docker提供了一些快捷的命令去清除未使用的容器,网络和镜像:

1

2

3

4

5

6

7

$ docker system prune

WARNING! This will remove:

- all stopped containers

- all networks not used by at least one container

- all dangling images

- all dangling build cache

Are you sure you want to continue? [y/N]

默认是没有清除数据卷的功能,由于数据比较重要,防止意外删除一些数据。可以通过--volumes指定。

同时,我们还可以将—all清除未使用的images。使用--force免确认。

1

2

3

4

5

6

7

8

$ docker system prune --all --volumes

WARNING! This will remove:

- all stopped containers

- all networks not used by at least one container

- all volumes not used by at least one container

- all images without at least one container associated to them

- all build cache

Are you sure you want to continue? [y/N]

当然,我们也可以单独清除。

docker container prune 清除停止的容器;

docker volume prune 清除未使用的数据卷;

docker image prune 清除未使用的镜像;

清除所有数据重置docker

上面的命令不会影响运行中的容器以及关联的镜像,数据卷和网络。如果你需要全部清理就需要将所有容器都停止下来。

使用docker container stop [CONTAINERS...]能停止正在运行的容器。同时我们可以通过下面命令获取正在运行的容器ID。

$ docker container ls -aq

ls 列出所有容器;

--all / -a列出所有容器(包含未运行的);

--quiet / -q 只显示容器ID;

于是我们可以使用下面命令停止所有容器:

1

$ docker container stop $(docker container ls -a -q)

结合清除的命令,完整的清除所有的容器命令如下:

1

$ docker container stop $(docker container ls -a -q) && docker system prune -a -f --volumes

同理,我们可以想到:

清除容器 docker container rm $(docker container ls -a -q) / docker rm $(docker ps -a -q);

清除镜像 docker image rm $(docker images ls -a -q);

清除数据卷 docker volume rm $(docker volume ls -q);

清除网络 docker network rm $(docker network ls -q);

限制容器日志大小

很多时候,我们发现我们都是被日志文件撑爆的,解决问题的源头就是限制容器日志大小,方法有三:

修改daemon.json配置;

1

2

3

4

5

{

"log-opts": {

"max-size" : "521m"

}

}

修改docker-compose;

1

2

3

4

5

6

7

ubuntu:

image: ubuntu

restart: always

logging:

driver: "json-file"

options:

max-size: "1g"

通过参数;

1

$ docker run -d --log-opt max-size=1g ubuntu

其他常见的有关清理命令

清除指定日志文件;

如果你要删除指定容器的日志,只有几步即可。

1

2

3

4

# 获取该容器的日志地址

$ docker inspect 2ed640d8fcd1 --format '{{.LogPath}}'

/mnt/data/docker/containers/2ed640d8fcd1bd464a23be78513d23be1807c8ad6a95116da5cb9118a6b2380a/2ed640d8fcd1bd464a23be78513d23be1807c8ad6a95116da5cb9118a6b2380a-json.log

知道了日志地址,你就可以删除或清空该日志了,不过注意权限哦~

杀死所有正在运行的容器;

1

$ docker kill $(docker ps -a -q)

删除所有已经停止的容器;

1

$ docker rm $(docker ps -a -q)

删除未打标签的镜像;

1

$ docker rmi $(docker images -q -f dangling=true)

批量删除指定镜像/容器等;

我们可以通过--format指出docker命令的输出形式,通过grep去筛选,然后删除。 如:

1

2

3

4

# 删除带有指定 hub.docker.com 仓库的镜像

$ docker rmi $(docker images --format '{{.Repository}}' | grep 'hub.docker.com')

# 杀掉带有ubuntu 镜像名字的容器

$ docker kill $(docker ps -a --format '{{.Images}}' | grep 'ubuntu')

乌班图docker容器日志清理_关于Docker清理 - osc_1jsw6j7h的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. php面试题 优信二手车_分布式定时任务对比 - sharedCode的个人空间 - OSCHINA - 中文开源技术交流社区...

    分布式定时任务 1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式.叫做分布式定时任务. 2. 常见开源方案 elastic ...

  2. java绘制统计直方图取平均_统计学——直方图解析 - osc_lv8qb16y的个人空间 - OSCHINA - 中文开源技术交流社区...

    直方图(Histogram),又称质量分布图,是一种统计报告图, 由一系列高度不等的纵向条纹或线段表示数据分布的情况. 一般用 横轴表示数据类型,纵轴表示分布情况. 直方图是数值数据分布的精确图形表示 ...

  3. python 白盒测试_白盒测试教程 - 颜丽的个人空间 - OSCHINA - 中文开源技术交流社区...

    总共贴了39节,后续还有很长,共122节,文章名为'白盒测试教程' 1.白盒测试概念 2.测试覆盖标准 3.逻辑驱动测试 4.基本路径测试 白盒测试概念 1.白盒测试也称结构测试或逻辑驱动测试,是一种 ...

  4. lua 区间比较_自然区间匹配算法 - borey的个人空间 - OSCHINA - 中文开源技术交流社区...

    什么是自然区间? 每一个单位都可以顺序访问的区间就称之为自然区间. 什么是自然区间匹配? 很多时候需要验证一个值,这个值的粒度很小或者说是异构的(从另外的模块获取的).配置这个值是否正确,我们通常会设 ...

  5. java 日程日历_日程日历示例 - voxer的个人空间 - OSCHINA - 中文开源技术交流社区...

    这是用户利用do_Gridview和do_ListView及其它组件绘制的日历和任务,基本实现一个完整的在线日程管理功能 先看图,android和ios上的效果图如下: 我们可以看到通过deviceo ...

  6. 关联规则可视化python语言_关联规则可视化 - 猪猪daxia的个人空间 - OSCHINA - 中文开源技术交流社区...

    关联规则挖掘是一种流行的数据挖掘方法,在R语言中为扩展包arules.然而,挖掘关联规则往往导致非常多的规则,使分析师需要通过查询所有的规则才能发现有趣的规则.通过手动筛选大量的规则集是费时费力.在本 ...

  7. mysql数据无故回档_数据库回档解决方案 - osc_hajrc28s的个人空间 - OSCHINA - 中文开源技术交流社区...

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:李明,腾讯云数据库架构师华南区负责人,曾在某专业数据库服务商.51job任职DBA. 作为一名DBA,日常工作中免不了需要做一些救 ...

  8. python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...

    实例描述 配送中心数为 $1$,客户数 $k$为 $8$,车辆总数 $m$为 $2$:车辆载重皆为 $8$ 吨:各客户点需求为 $g(i = 1, 2, ... , 8)$(单位为吨),已知客户点与配 ...

  9. python获取中文字体点阵坐标_点阵汉字显示 - freecamel的个人空间 - OSCHINA - 中文开源技术交流社区...

    目录: DOS下的点阵汉字 汉字的内码 汉字字模 汉字库文件 打印字库文件和HZK12 main() { unsigned char *s,*e="ABcd",*c="你 ...

最新文章

  1. python函数装饰函数_Python精进-装饰器与函数对象
  2. Spark累加器实现原理及基础编程
  3. css实现鼠标覆盖显示大图
  4. 用excel制作双层饼图_双层饼图,让你的工作更出彩
  5. 晚上不睡觉,搞的一个例子《JS实现动画》
  6. 网页中播放FLV文件的代码
  7. 带有Upida/Jeneva的ASP.NET MVC单页应用程序(前端/AngularJS)
  8. oracle9可以访问8,使用Oracle9i全索引扫描快速访问数据
  9. 简单工厂模式学习总结
  10. 计算机怎么看事件管理,如何打开事件查看器 win7事件查看器打开及使用方法介绍...
  11. java中statistic_Java Statistic類代碼示例
  12. Java 如何判断手机号的运营商,是移动、联通、还是电信?
  13. java获取本机ip的方法
  14. 服务器安全设置全攻略
  15. 《使命召唤》手游滑铲怎么释放?什么时候使用滑铲更好?
  16. 史上最全报表教程,还不快收藏!
  17. 程序员面试100题之六 最长公共子序列
  18. 任正非 采访 安卓 鸿蒙,法媒专访任正非透露“鸿蒙”系统“很可能”快过安卓...
  19. AVA时空检测数据集下载—AVA_ActionsAVA_Kinetics
  20. 开机上报树梅派2的IP地址到邮箱

热门文章

  1. 十进制转化为二进制,八进制,十六进制的程序代码(C语言)
  2. 纯JavaScript在网页上实现”简书“的文章编辑器
  3. 《自动驾驶技术系列丛书》--第一章 自动驾驶技术概论(3)
  4. 使用Python书写的公式编辑器
  5. 推荐系统常用的推荐算法总结
  6. Hadoop-HA(高可用)架构原理
  7. ?Android和Linux kernel发展史(BY 夕つ云 整理)
  8. Cocos CEO 林顺:专注底层技术,以 3D 引擎打造高沉浸感元宇宙
  9. 把gphoto2弄到Android手机上,来控制单反相机
  10. git单机, 远程仓库, 分支管理