解决Docker镜像爆满的问题

标签: Linux运维 Linux | 发表时间:2022-02-13 00:00 | 作者:
出处:https://blog.hufeifei.cn/

使用过docker的人都知道,在正常情况下。我们使用multi-stage构建利用docker镜像缓存机制,可以加快构建速度。

但是缓存的镜像一多,没有及时释放磁盘空间,磁盘就容易爆满。

1      
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@report ~]# df -h      
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 24K 919M 1% /dev/shm
tmpfs 919M 752K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 50G 9.6G 38G 21% /
tmpfs 184M 0 184M 0% /run/user/0
+overlay 50G 9.6G 38G 21% /var/lib/docker/overlay2/eefc0488163e0d222c384c54041549023a998e3fefeea1c672f0cb9b0f1e78a1/merged
shm 64M 0 64M 0% /var/lib/docker/containers/ceb6efe9a7cd0563af63ee0b37fb7d7d4f387a46691e7d1d6109876a22fc8b6d/mounts/shm
+overlay 50G 9.6G 38G 21% /var/lib/docker/overlay2/038df81678b0660a7f3e9eaade223fdd541beff0799bed64437eabe525c4088d/merged
+overlay 50G 9.6G 38G 21% /var/lib/docker/overlay2/1bd852511b0179c8cc31b9e5a3b6ccf66da6d990a98a1b5ca7874e556f1e384e/merged
shm 64M 0 64M 0% /var/lib/docker/containers/83e5b18fe998f7ed3ceb4b6328ee427748cd8fd8f1de313222286e3bc125bb15/mounts/shm
[root@report ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 12 8 3.453GB 903.7MB (26%)
Containers 9 3 120.3MB 13.79MB (11%)
Local Volumes 1 1 292.6MB 0B (0%)
Build Cache 0 0 0B 0B

如果每次构建完手动 docker rmi又达不到加快构建速度的效果。

尤其是在持续集成环境中,大家公用一个build machine的时候。大家各自打扫门前雪,更加不会有人care磁盘会不会被占满。

#方法

为了一劳永逸的解决这个问题,最好的办法莫过于通过定时任务来清理旧的image。 这个方法听起来高大上,用起来简单的很。 运行crontab -e命令编辑定时任务。

1      
crontab -e      

在打开的文本编辑器最后添加如下一行,然后保存退出。

1      
0 1 * * * docker image prune -a --force --filter "until=48h"      

然后执行下面的命令使定时任务生效。

1      
systemctl restart crond.service      

其实,到这里,整个配置就结束了。接下来我们简单解释一下。
上面的定时任务是每天夜里1点钟删除2天(48h)之前的image。
具体的操作时间,具体的image保留时间,可以根据自己的情况修改。

相关 [docker 镜像 问题] 推荐:

解决Docker镜像爆满的问题

- - holmofy
使用过docker的人都知道,在正常情况下. 我们使用multi-stage构建利用docker镜像缓存机制,可以加快构建速度. 但是缓存的镜像一多,没有及时释放磁盘空间,磁盘就容易爆满. 容量 已用 可用 已用% 挂载点. 如果每次构建完手动 docker rmi又达不到加快构建速度的效果.

Docker镜像仓库Harbor

- - 灰狐博客
Habor是由VMWare公司开源的容器镜像仓库. Habor是在Docker Registry上进行了相应的企业级扩展,这些企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等. 京东使用了Harbor搭建了自己的私有Dockr镜像仓库. 用Harbor实现容器镜像仓库的管理和运维.

几款 Shadowsocks 的 Docker 镜像

- - Shadowsocks非官方网站
Docker 是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在 Linux 操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制. Docker 利用 Linux 核心中的资源分脱机制,例如 cgroups,以及 Linux 核心名字空间(name space),来创建独立的软件容器(containers).

mdblog/Docker镜像中心.md at master · downgoon/mdblog · GitHub

- -
手把手体验DockerHelloWorld. Docker Image: 它是用来运行出. Docker Container的. nodejs image等. Docker Registry Mirrors: 为了让大家方便使用,不需要每个人都去制作. Docker Image,我们可以分享:你制作一个.

Docker 最佳实践:构建最小镜像

- - IT瘾-dev
镜像大小其实是衡量我们容器打包技术的重要指标,我们应该在不影响应用正常运行的情况下,尽量让我们的容器镜像变得更小,这样,不管是从安全还是维护效率角度来讲,都是最佳实践. 本文我们从两种情况阐述我们的问题和解决方案,我们从实现我们的application的编程语言角度,按照语言是解释型还是编译型语言来演示如何解决容器镜像体积大的问题.

docker/kubernetes国内源/镜像源解决方式

- - Xinkun Blog
最近在使用kubeadm时,被各种连接不上搞到崩溃. 这里统一整理了国内的一些镜像源,apt源,kubeadm源等,以便查阅. Azure China提供了目前用过的质量最好的镜像源. 而且都支持匿名拉取,也就是不需要登录. 这里,我开发了一个小的脚本azk8spull,这个脚本可以自动根据镜像名称进行解析,转换为azure的mirror镜像源域名.

Docker 最佳实践:5 个方法精简镜像

- - IT瘾-dev
本文记录了精简Docker镜像尺寸的必要性及好处. 上篇文章回顾: HBase实战:记一次Safepoint导致长时间STW的踩坑之旅. 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患. 优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而有差异. 本文将介绍精简Docker镜像的几种通用方法.

使用Jib快速简便地创建Docker镜像

- - DockOne.io
在本文中,我们将看看Jib,它是Google提供的一个工具,可以轻松快速地创建Docker镜像. 无需创建Dockerfile文件,也无需安装Docker守护进程,Jib可直接使用. 到目前为止,我们一直使用来自Spotify的 dockerfile-maven-plugin来构建和推送Docker镜像.

Docker镜像优化:如何从1.16GB优化到22.4MB

- - DockOne.io
图源  www.docker.com. Docker是软件开发者和系统管理员用容器构建、运行和共享应用程序的平台. 一个 容器是一个运行在隔离环境中、拥有自己的文件系统上的进程;这个文件系统是使用 docker镜像构建的. 镜像文件包括运行应用程序所需的一切(编译后的代码、依赖关系、库等). 镜像可以使用一个名为 Dockerfile的文件来定义.

Docker 多平台构建指南:构建 WebAssembly 镜像

- - Jimmy Song - 专注于探索后 Kubernetes 时代的云原生新范式 – 博客
Docker 多平台构建是一种用于构建 Docker 镜像以在多种 CPU 架构和操作系统上运行的技术. 它可以让用户在一个 Dockerfile 中定义一个通用的构建过程,然后使用 Docker CLI 命令将其构建为多个不同平台的镜像. 这些镜像可以在不同的计算机、云平台和容器编排系统上运行,从而为用户提供更广泛的部署选项.