Docker 创建了数百个无法修剪的卷

问题描述 投票:0回答:1

我们有一个 Ubuntu 服务器,在 Docker 下运行一些测试环境。今天系统空间不足,我最终发现

/var/lib/docker
已经增长到 826 GB,其中
/var/lib/docker/volumes
就达到了 600 GB。

结果 docker 已经创建了超过 1,300 个卷:

$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          12        12        9.271GB   447.8MB (4%)
Containers      12        10        405.9MB   62.84MB (15%)
Local Volumes   1307      8         634.8GB   630.8GB (99%)
Build Cache     3586      0         19.05GB   19.05GB

我尝试过

docker volume prune
(之前也尝试过强制修剪图像和容器),但只删除了少数卷。

我们有另一台服务器,在 Docker 下具有相同的测试环境,它看起来完全不同(即正常),只有 9 个卷:

$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          13        13        10.07GB   447.8MB (4%)
Containers      14        10        312.2MB   111.7MB (35%)
Local Volumes   9         9         5.212GB   0B (0%)
Build Cache     0         0         0B        0B

如果我检查其中一卷以找出它属于哪个容器或图像,我什么也得不到:

$ docker ps -a --filter volume=ff17641242297f3f9f3a63b2c328168f93c514e6e41cc3ed19bfbcb192acb5c7
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

我尝试了更激进的解决方案:

$ docker system prune -a -f

它删除了大量构建缓存对象(总共 21 GB),但没有删除卷。

Docker 怎么可能创建了 1,300 个无法修剪的卷?我能做什么来解决这个问题?


请注意,我发现为什么我的docker卷磁盘空间不足?,但是答案中给出的解决方案不起作用,所以我认为我的问题是不同的。

docker docker-volume diskspace
1个回答
0
投票

这个命令最终做到了:

docker volume rm $(docker volume ls -q --filter dangling=true)

根据文档,

docker volume prune -f
实际上应该可以完成这项工作,但事实并非如此。根据这个答案,上面是“旧方法”,但显然,这也是它实际工作的方式。

© www.soinside.com 2019 - 2024. All rights reserved.