Docker构建镜像时空间不足:/var/lib/docker,no space left on device

背景

在一次更新业务服务功能后,重新在服务器上构建微服务镜像,在构建镜像时报错空间不足:

/var/lib/docker, no space left on device

赶紧用 df -h 看了下磁盘使用情况,果然, devicemapper 已经满了。。由于需要紧急上线,没有采用迁移 Docker 工作目录的方式;而是想办法删除一些没用的文件,空出本次镜像构建、容器运行的空间。

devicemapper

在处理问题前,先来了解下什么是 docker/devicemapper ,这个目录存储了 Docker 使用 devicemapper 存储驱动时的相关数据。这包括镜像、容器和卷的数据。 DevicemapperDocker 的一种存储驱动程序,它使用块设备来存储 Docker 容器的数据。在 docker/devicemapper 目录中,我们可以看到 metadatasnapshotsthinpool 等文件和目录,用于存储 devicemapper 驱动所需的数据。

腾出空间

你可以删除 docker/devicemapper 目录下的内容,但请注意,这将导致丢失所有存储在其中的镜像、容器和卷的数据。如果想要清理这些数据,最好使用 Docker 提供的命令来进行清理,以确保数据被正确地清理并且不会导致系统不稳定。为了给本次镜像构建、容器运行腾出空间,我主要采用了以下命令。

  • 检查Docker数据目录的大小

du -sh /var/lib/docker

  • 查找并删除一些过旧或者不再需要的日志文件

find /var/lib/docker/devicemapper/mnt -name “*.log” -type f -exec rm {} ;

  • 查找并删除一些过旧或者不再需要的临时文件

find /var/lib/docker/devicemapper/mnt -name “*.tmp” -type f -exec rm {} ;

  • 删除无用卷

docker volume rm $(docker volume ls -qf dangling=true)

  • 清理dangling image

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)

  • 清理无用的镜像和容器

docker system prune -a

# 检查Docker数据目录的大小
du -sh /var/lib/docker# 查找并删除一些过旧或者不再需要的日志文件
find /var/lib/docker/devicemapper/mnt -name "*.log" -type f -exec rm {} \; # 查找并删除一些过旧或者不再需要的临时文件
find /var/lib/docker/devicemapper/mnt -name "*.tmp" -type f -exec rm {} \; # 删除无用卷
docker volume rm $(docker volume ls -qf dangling=true)# 清理dangling image
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)# 清理无用的镜像和容器
docker system prune -a
  • 调整Docker的数据目录
    如果你的Docker数据目录(通常是/var/lib/docker)所在的分区空间不足,也可以考虑将其迁移到空间更大的分区。具体的迁移方式网上教程很多,由于我这次
    没有亲身实践,就省略这部分了。

2023-12-16-DFSnap.png

最终,通过删除无用卷 docker volume rm $(docker volume ls -qf dangling=true) 这条命令,成功空出了2G+的磁盘空间。

小总结

解决问题的方法有很多种,因为每个问题都有其独特的特点和背景。在选择解决方案时,需要考虑问题的性质、规模和环境。有时候,简单的问题可能需要简单的解决方案,而复杂的问题可能需要更加深入的分析和综合的解决方案。因此,对于不同的场景,我们需要灵活运用各种工具、技术和方法来解决问题,以达到最佳的效果。

比如这次遇到的问题,你可以尝试清理不必要的镜像和容器来释放空间。另外,也可以考虑调整devicemapper的配置,比如增加数据卷的大小或者切换到其他存储驱动。但是最重要的是:记得在操作之前备份数据。

Reference

  • https://blog.51cto.com/u_16175464/7097163

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/279339.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BIM 技术:CIM (City Information Modeling) 1-7 级

本心、输入输出、结果 文章目录 BIM 技术:CIM (City Information Modeling) 1-7 级前言城市信息模型(CIM)概述城市信息模型分级介绍CIM 1CIM 2CIM 3CIM 4CIM 5CIM 6CIM 7 花有重开日,人无再少年实践是检验真…

狗dog目标检测数据集VOC+YOLO格式1W+张

狗,是食肉目犬科 [11]犬属 [13]哺乳动物 [12],别称犬,与马、牛、羊、猪、鸡并称“六畜” [13]。狗的体型大小、毛色因品种不同而不同,体格匀称;鼻吻部较长;眼呈卵圆形;两耳或竖或垂;…

遥感论文 | Scientific Reports | 一种显著提升遥感影像小目标检测的网络!

论文题目:MwdpNet: towards improving the recognition accuracy of tiny targets in high-resolution remote sensing image论文网址:https://www.nature.com/articles/s41598-023-41021-8 摘要 提出MwdpNet,以提高对高分辨率遥感&#xf…

串口通信(6)-C#串口通信Modbus协议完整实例

本文讲解C#基于ModbusRTU协议串口通信完整实例。 前言 关于modbus的协议从上一篇中有介绍,本篇不在阐述。 串口通信(5)-C#串口通信数据接收不完整解决方案 创建实例 添加控件和事件等 参考界面文件 namespace ModbusRTUDemo {partial class MainForm{/// <summary>…

Mr. Cappuccino的第67杯咖啡——MacOS通过PD安装Win11

MacOS通过PD安装Win11 下载ParallelsDesktop安装ParallelsDesktop激活ParallelsDesktop下载Windows11安装Windows11激活Windows11 下载ParallelsDesktop ParallelsDesktop下载地址 安装ParallelsDesktop 关闭上面的窗口&#xff0c;继续操作 激活ParallelsDesktop 关闭上面的…

数据结构之排序

目录 ​ 1.常见的排序算法 2.插入排序 直接插入排序 希尔排序 3.交换排序 冒泡排序 快速排序 hoare版本 挖坑法 前后指针法 非递归实现 4.选择排序 直接选择排序 堆排序 5.归并排序 6.排序总结 一起去&#xff0c;更远的远方 1.常见的排序算法 排序&#xff1a;所…

论文阅读——Semantic-SAM

Semantic-SAM可以做什么&#xff1a; 整合了七个数据集&#xff1a; 一般的分割数据集&#xff0c;目标级别分割数据集&#xff1a;MSCOCO, Objects365, ADE20k 部分分割数据集&#xff1a;PASCAL Part, PACO, PartImagenet, and SA-1B The datasets are SA-1B, COCO panopt…

Centos7 配置Git

随笔记录 目录 1&#xff0c; 新建用户 2. 给用户设置密码相关操作 3. 为新用户添加sudo 权限 4. 配置Git 4.1 配置Git 4.2 查看id_ras.pub 5, 登录Git 配置SSH 秘钥 6. Centos7 登录Git 7. clone 指定branch到本地 8. 将新代码复制到指定路径 9. 上传指定代码 …

maui下sqlite演示增删改查

数据操作类 有分页 todoitemDatabase.cs&#xff1a; using SQLite; using TodoSQLite.Models;namespace TodoSQLite.Data {public class TodoItemDatabase{SQLiteAsyncConnection Database;public TodoItemDatabase(){}// 初始化数据库连接和表async Task Init(){if (Databa…

记录一下github深度学习的错误

1.[visdom]无法正常启动服务问题解决 在Anaconda命令窗口中&#xff1a; 使用python -m visdom.server启动visdom服务时&#xff0c;卡在&#xff1a; Checking for scripts. Downloading scripts, this may take a little while 无法下载和启动服务。 ERROR&#xff1a;由…

Python基础入门第四节,第五节课笔记

第四节 第一个条件语句 if 条件: 条件成立执行的代码1 条件成立执行的代码2 ...... else: 条件不成立执行的代码1 条件不成立执行的代码2 …… 代码如下: 身高 float(input("请输入您的身高(米):")) if 身高 >1.3:print(f您的身高是{身高},已经超过1.3米,您需…

图片变成动图如何操作?掌握这个办法就够了

生动有趣的gif动画图片是怎么制作的呢&#xff1f;其实&#xff0c;制作gif动图的方法很简单&#xff0c;无需下载任何软件&#xff0c;使用gif动图制作&#xff08;https://www.gif.cn/&#xff09;工具-GIF中文网。只需要上传jpg、png格式的图片&#xff0c;轻松一键就能在线…