我对 docker overlay2 文件夹有问题。
当我在撰写本文时输入 du -sj /var/lib/docker/overlay2 时,它显示:
85G overlay2/
并且它不断成长。 我尝试使用以下命令来修剪系统:
docker system prune -a
但是输出是:
Total reclaimed space: 0B
我还尝试将 max-file 和 max-size 添加到我的 docker compose 中。添加这些行后,我重新创建了容器。但问题仍然存在,有什么办法可以解决它,只是为了停止占用磁盘空间吗?
编辑:
码头工人信息:
服务器:
容器:10
跑步:10
暂停:0
已停止:0
图片:6
服务器版本:19.03.8
存储驱动程序:overlay2
支持文件系统:
支持 d_type: true
原生覆盖差异:true
日志驱动程序:json-file
Cgroup 驱动程序:cgroupfs
插件:
音量:本地
网络:桥接主机 ipvlan macvlan null 覆盖
日志:awslogs fluidd gcplogs gelf Journald json-file local \logentries splunk syslog
群:不活动
运行时:runc
默认运行时:runc
初始化二进制文件:docker-init
容器版本:7ad184331fa3e55e52b890ea95e65ba581ae3429
runc版本:dc9208a3303feef5b3839f4323d9beb36df0a9dd
初始化版本:fec3683
安全选项:
装甲
秒补
配置文件:默认
内核版本:4.15.0-91-generic
操作系统:Ubuntu 18.04.4 LTS
操作系统类型:linux
架构:x86_64
CPU:32
总内存:62.86GiB
名称:机器
ID: TRX2:AJZG:LNJF:UCPW:MQQB:2PLR:R7KM:VHEV:KBOG:IBT4:JX4R:WR6V
Docker 根目录:/var/lib/docker
调试模式:假
注册表: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
#!/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 运行。就我而言,每小时
您有 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 目录的更多信息,请参阅 清理 docker/overlay2 是否安全。
我也有过同样的经历,但似乎
docker prune --all
并没有(总是?根本?)按预期工作。
对我有什么帮助:
开始之前检查当前使用情况
docker system df
删除所有超过 35 天的容器(根据您的喜好调整)
docker container prune --filter "until=840h" --force
删除未使用的卷
docker volume prune --force
删除悬空卷(
docker system prune
实际上应该解决这个问题,但通常不会)
docker volume rm $(docker volume ls -q --filter dangling=true)
最后,删除所有超过48小时的缓存文件
docker builder prune --all --filter until=48h --force
再次检查查看结果
docker system df