docker devmapper和CentOS7上的空间问题


103

我正在学习docker并且正在使用v1.11.0,我正在尝试安装hadoop,但是devmapper在抱怨可用磁盘空间?

devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

我已删除所有图像,但问题仍然存在:

[root@localhost hadoop_docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              47af6ca8a14a        3 weeks ago         125 MB
[root@localhost hadoop_docker]#

这是我的磁盘配置:

[root@localhost ~]# lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0    8G  0 disk
├─sda1                       8:1    0  500M  0 part /boot
└─sda2                       8:2    0  7.5G  0 part
  ├─centos-root            253:0    0  6.7G  0 lvm  /
  └─centos-swap            253:1    0  820M  0 lvm  [SWAP]
sr0                         11:0    1 1024M  0 rom
loop0                        7:0    0  100G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm
loop1                        7:1    0    2G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm

问题:如何释放磁盘空间?

谢谢


1
这也与回送中的devicemapper不可恢复的存储问题有关吗?github.com/docker/docker/issues/3182 “不建议将devicemapper用于生产。” 出于某些原因,最好远离devicemapper。我发现切换到叠加存储驱动程序很容易,当然是YMMV,但希望不要太多。切换时'rm -rf / var / lib / docker'在某种程度上是可选的,但很容易,我强烈建议您这样做。 projectatomic.io/blog/2015/06/…–
gaoithe

1
仅供参考,您可以通过“ sudo lvs” 查看精简池磁盘的使用情况。当您试图找出需要清理的“多少”磁盘空间时(使用给定的答案),这将有所帮助。
亚伦·马拉斯科

Answers:


28

您可以使用:

docker system prune -a -f --volumes

哪里:

  • -a ==删除所有未使用的图像
  • -f ==力
  • --volumes ==修剪卷。

参见:https : //docs.docker.com/engine/reference/commandline/system_prune/#description

附带说明,当我在环境中使用devicemapper驱动程序时,我遇到了很多问题。正如我提到的那样,我以前经常进行清洁,但是仍然存在其他devicemapper问题。我强烈建议移至overlay2,它几乎可以解决所有问题。


1
我们在@ Cokoda-Raka的答案中定期运行命令,但是在一个特定的Docker主机上,当overaly2占用了大量磁盘空间(超出应有的磁盘空间)时,此命令是必需的。我想我也会将此命令添加到我们的自动清理任务中。
StockB

1
这对带有Docker 1.13.1的RHEL 7有所帮助。运行docker container prune,,docker image prune之后docker volume prune,我们仍然收到devmapper / Thin Pool错误。上面的命令起作用了,清理了必要的空间并消除了重新启动守护程序的需要。
Johnathan Elmore

167

只需运行这三个。无需删除RUNNING容器。

  1. 清理退出的进程:

    docker rm $(docker ps -q -f status=exited)
    
  2. 清理悬空卷:

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. 清理悬空图像:

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


19
现在,1.13版允许调用docker system prune docs.docker.com/engine/reference/commandline/system_prune
Vivek Kodira

1
这可能应该是公认的答案。另一个答案可能会杀死比您要杀死的容器更多的容器。
DigitalFiz

2
此命令对于清理计算机磁盘非常有帮助,但不能解决devicemapper和空间的问题。
Paulo Oliveira

4
我仍然不明白该错误消息的含义是什么,所以即使这些命令有效,我也不会完全理解为什么。什么是“瘦身池”?退出的进程与“释放数据块”有什么关系?
yiati
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.