【问题标题】:Docker overlay2 folder eating DiskDocker overlay2 文件夹吃磁盘
【发布时间】:2022-01-06 23:07:23
【问题描述】:

我的 docker overlay2 文件夹有问题。

当我在撰写本文时输入 du -sj /var/lib/docker/overlay2 时显示:

85G overlay2/

而且它一直在成长。 我尝试使用以下命令修剪系统:

docker system prune -a

但输出是:

Total reclaimed space: 0B

我还尝试将 ma​​x-filema​​x-size 添加到我的 docker compose 中。添加这些行后,我重新创建了容器。但是问题依然存在,能不能用什么方法解决,就是停止吃磁盘空间?

编辑:

码头信息:

服务器:
容器:10
跑步:10
暂停:0
已停止:0
图片:6
服务器版本:19.03.8
存储驱动程序:overlay2
支持文件系统:
支持 d_type: true
原生叠加差异:true
日志记录驱动程序:json-file
Cgroup 驱动程序:cgroupfs
插件:
音量:本地
网络:桥接主机 ipvlan macvlan null overlay
日志:awslogs fluentd gcplogs gelf journald json-file local \logentries splunk syslog
群:不活动
运行时:runc
默认运行时:runc
初始化二进制文件:docker-init
容器版本:7ad184331fa3e55e52b890ea95e65ba581ae3429
runc 版本:dc9208a3303feef5b3839f4323d9beb36df0a9dd
初始化版本:fec3683
安全选项:
服装
seccomp
配置文件:默认
内核版本:4.15.0-91-generic
操作系统:Ubuntu 18.04.4 LTS
操作系统类型:linux
架构:x86_64
CPU:32
总内存:62.86GiB
名称:机器
编号:TRX2:AJZG:LNJF:UCPW:MQQB:2PLR:R7KM:VHEV:KBOG:IBT4:JX4R:WR6V
Docker 根目录:/var/lib/docker
调试模式:false
注册表:https://index.docker.io/v1/\ 标签:
实验性:错误
不安全的注册表:
127.0.0.0/8
启用实时恢复:false\

docker 镜像:(出于安全原因,我不会显示名称)

TAG IMAGE ID CREATED SIZE
latest 667ac029b200 2 years ago 7.6GB
latest cb9df5aac4ac 2 years ago 12.9GB
latest d445c0adc9a5 3 weeks ago 220MB
latest 227d9f0554d3 2 years ago 1.34GB
latest b80092729008 2 years ago 758MB
latest f32a97de94e1 2 years ago 25.8MB

【问题讨论】:

  • 你在运行什么容器?它们占用了多少空间(答案可能是 85G 多一点)?在您的问题中包含docker infodocker image ls -adocker container ls -a 的输出。

标签: docker devops


【解决方案1】:
#!/bin/bash
# Remove exited containers
/usr/bin/docker ps -a -q -f status=exited | xargs --no-run-if-empty docker rm -v

# Remove dangling images
/usr/bin/docker images -f "dangling=true" -q | xargs --no-run-if-empty docker rmi

# Remove unused images
/usr/bin/docker images | awk '/ago/  { print $3}' | xargs --no-run-if-empty docker rmi

# Remove dangling volumes
/usr/bin/docker volume ls -qf dangling=true | xargs --no-run-if-empty docker volume rm

使用 cron 运行。就我而言,每小时一次

【讨论】:

  • 它没有帮助,我试过了,但它什么也没清除。
【解决方案2】:

您有 10 个容器正在运行,而 2 年前的映像强烈表明您可能正在改变这些容器内的文件系统(写入日志、临时文件,甚至可能安装应用程序)。修剪不会删除这些容器、它们的映像、这些容器内的文件系统更改或容器的日志。您将在 overlay2 中看到的部分是那些文件系统更改,因此请使用以下内容查看在每个容器中创建/更改了哪些文件:

docker container diff ${container_name_or_id}

例如:

$ docker container diff d7c
C /run
A /run/user
A /run/user/1000
C /tmp
A /tmp/.X11-unix
C /home
A /home/user

您的列表可能会更长,您可以进入容器删除您不再需要的所有文件(使用 docker exec 假设容器具有 shell 和其他 CLI 工具)。

有关清理大型 overlay2 目录的更多信息,请参阅 is it safe to clean docker/overlay2

【讨论】:

    【解决方案3】:
    1. 检查 docker volume ls ,它将显示卷和大小
    2. 不需要的就清除它们
    3. 如果您使用的是基于 linux 的映像,您可以使用 - apt-get autoremove 来删除孤立包

    【讨论】:

    • 我也试过这个,但我没有未使用的卷。
    • 好的,那么剩下的就是从所有容器中删除不需要的包
    猜你喜欢
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多