Docker overlay2文件夹吃磁盘

Docker overlay2 folder eating Disk

我对 docker overlay2 文件夹有问题。

当我在撰写本文时输入 du -sj /var/lib/docker/overlay2 时,它说:

85G overlay2/

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

docker system prune -a

但输出是:

Total reclaimed space: 0B

我还尝试将 max-filemax-size 添加到我的 docker 撰写中。添加这些行后,我重新创建了容器。但是问题依旧,有什么办法可以解决,就是不吃盘space ?

编辑:

docker 信息:

Server:
Containers: 10
Running: 10
Paused: 0
Stopped: 0
Images: 6
Server Version: 19.03.8
Storage Driver: overlay2
Backing Filesystem:
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local \logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-91-generic
Operating System: Ubuntu 18.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 32
Total Memory: 62.86GiB
Name: machine
ID: TRX2:AJZG:LNJF:UCPW:MQQB:2PLR:R7KM:VHEV:KBOG:IBT4:JX4R:WR6V
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/\ Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: 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 }' | 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。在我的例子中每小时

  1. 检查 docker 卷 ls ,它会显示卷和大小
  2. 任何不需要的清除它们
  3. 如果您使用的是基于 linux 的图像,您可以使用 - apt-get autoremove 来删除孤立包

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

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 目录的更多信息,请参阅