为什么Docker图像吃掉了Docker没有使用的磁盘空间 [英] Why is docker image eating up my disk space that is not used by docker

查看:187
本文介绍了为什么Docker图像吃掉了Docker没有使用的磁盘空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经设置了docker,并且已经使用完全不同的块设备来存储Docker的系统数据:

  [root @ blink1 / ]#cat / etc / sysconfig / docker 
#/ etc / sysconfig / docker

other_args = - H tcp://0.0.0.0:9367 -H unix:/// var /run/docker.sock -g / disk1 / docker

请注意, / disk / 1 正在使用完全不同的硬盘驱动器 / dev / xvdi / p>

 使用的文件系统大小可用使用%安装在
/ dev / xvda1 7.8G 5.1G 2.6G 67%/
devtmpfs 1.9G 108K 1.9G 1%/ dev
tmpfs 1.9G 0 1.9G 0%/ dev / shm
/ dev / xvdi 20G 5.3G 15G 27%/ disk1
/ dev / dm-1 9.8G 1.7G 7.6G 18%/ disk1 / docker / devicemapper / mnt / bb6c540bae25aaf01aedf56ff61ffed8c6ae41aa9bd06122d440c6053e3486bf
/ dev / dm-2 9.8G 1.7G 7.7G 18%/ disk1 / docker / devicemapper / mnt / c85f756c59a5e1d260c3cdb473f3f4d9e55ac568967abe190ee af9c4087afeac

问题是,当我继续下载docker图像和运行docker容器时,似乎其他硬盘驱动器 / dev / xvda1 也用完了。



我可以验证通过删除一些docker图像的问题。在我删除了一些码头图像之后,现在, / dev / xvda1 现在有更多的空间。



我的码头版本:

  [root @ blink1 /]#docker info 
容器:2
图像:42
存储驱动程序:devicemapper
池名称:docker-202:1-275421-pool
池块大小:64 Kb
数据文件:/ disk1 / docker / devicemapper / devicemapper / data
元数据文件:/ disk1 / docker / devicemapper / devicemapper / metadata
使用的数据空间:3054.4 Mb
数据空间总计:102400.0 Mb
元数据空间:4.7 Mb
元数据空间总计:2048.0 Mb
执行驱动程序:native-0.2
内核版本:3.14。 20-20.44.amzn1.x86_64
操作系统:Amazon Linux AMI 2014.09


解决方案

这是devicemapper的一个内核问题,它会影响RedHat系列操作系统(RedHat,Fedora,CentOS和Amazon Linux)。删除的容器不会释放映射的磁盘空间。这意味着在受影响的操作系统上,您会在启动和重新启动容器时慢慢耗尽空间。



Docker项目知道这一点,内核应该是固定在上游( https://github.com/docker/docker/issues/3182 )。



解决方法是将Docker自己的卷写入(Docker吃掉你的磁盘空间)。这实际上并没有阻止它从吃空间,只是从它的系统的其他部分之后。



我的解决方案是卸载docker,然后删除它的所有文件,然后重新安装:

  sudo yum remove docker 
sudo rm -rf / var / lib / docker
sudo yum install docker

这让我的空间恢复了,但与启动替换实例。我没有找到更好的解决方案。


I have setup docker and I have used completely different block device to store docker's system data:

[root@blink1 /]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker

other_args="-H tcp://0.0.0.0:9367 -H unix:///var/run/docker.sock -g /disk1/docker"

Note that /disk/1 is using a completely different hard drive /dev/xvdi

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  5.1G  2.6G  67% /
devtmpfs        1.9G  108K  1.9G   1% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/xvdi        20G  5.3G   15G  27% /disk1
/dev/dm-1       9.8G  1.7G  7.6G  18% /disk1/docker/devicemapper/mnt/bb6c540bae25aaf01aedf56ff61ffed8c6ae41aa9bd06122d440c6053e3486bf
/dev/dm-2       9.8G  1.7G  7.7G  18% /disk1/docker/devicemapper/mnt/c85f756c59a5e1d260c3cdb473f3f4d9e55ac568967abe190eeaf9c4087afeac

The problem is that when I continue download docker images and run docker containers, it seems that the other hard drive /dev/xvda1 is also used up.

I can verify this problem by remove some docker images. After I removed some docker images, /dev/xvda1 has some more extra space now.

Am I missing something?

My docker version:

[root@blink1 /]# docker info
Containers: 2
Images: 42
Storage Driver: devicemapper
 Pool Name: docker-202:1-275421-pool
 Pool Blocksize: 64 Kb
 Data file: /disk1/docker/devicemapper/devicemapper/data
 Metadata file: /disk1/docker/devicemapper/devicemapper/metadata
 Data Space Used: 3054.4 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 4.7 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.14.20-20.44.amzn1.x86_64
Operating System: Amazon Linux AMI 2014.09

解决方案

It's a kernel problem with devicemapper, which affects the RedHat family of OS (RedHat, Fedora, CentOS, and Amazon Linux). Deleted containers don't free up mapped disk space. This means that on the affected OSs you'll slowly run out of space as you start and restart containers.

The Docker project is aware of this, and the kernel is supposedly fixed in upstream (https://github.com/docker/docker/issues/3182).

A work-around of sorts is to give Docker its own volume to write to ("When Docker eats up you disk space"). This doesn't actually stop it from eating space, just from taking down other parts of your system after it does.

My solution was to uninstall docker, then delete all its files, then reinstall:

sudo yum remove docker
sudo rm -rf /var/lib/docker
sudo yum install docker

This got my space back, but it's not much different than just launching a replacement instance. I have not found a nicer solution.

这篇关于为什么Docker图像吃掉了Docker没有使用的磁盘空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆