当前位置: 首页 > 面试题库 >

为什么Docker映像会占用Docker不使用的磁盘空间

左丘善
2023-03-14
问题内容

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

[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

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

问题是,当我继续下载docker映像并运行docker容器时,似乎另一个硬盘驱动器 /dev/xvda1 也用完了。

我可以通过删除一些Docker映像来验证此问题。在我删除了一些docker映像之后, /dev/xvda1 现在有了一些额外的空间。

我想念什么吗?

我的泊坞窗版本:

[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

问题答案:

这是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

这使我重新获得了空间,但是与启动替换实例并没有什么不同。我还没有找到更好的解决方案。



 类似资料:
  • 如果docker文件中有RUN命令,那么它会创建一些中间图像。我的问题是,这些中间图像是否占用硬盘的内存?如果是,docker build--rm应该足够了吗?

  • 只显示7-9个图像。 显示n个图像。 当我创建一个文件时,由于系统完全错误而导致写入错误。我试图创建符号链接。但是我不能搬动码头工人的东西。 删除/var/lib/docker/graph下的所有内容好吗?除了创建符号链接和扩展磁盘之外,还有什么其他可能性?我宁愿删除不必要的东西。

  • 问题内容: 我在VM上运行容器。我的容器默认将日志写入/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID- json.log文件,直到磁盘已满。 当前,我必须手动删除此文件,以避免磁盘已满。我读到在Docker 1.8中会有一个参数来旋转日志。您会建议什么作为当前解决方法? 问题答案: Docker 1.8已发布,带有日志轮换选项。新增: 当容

  • 我正在 VM 上运行容器。默认情况下,我的容器将日志写入 /var/lib/泊坞窗/容器/CONTAINER_ID/CONTAINER_ID-json.log 文件,直到磁盘已满。 目前,我必须手动删除这个文件,以避免磁盘已满。我听说Docker 1.8中会有一个参数来旋转日志。您建议当前的解决方法是什么?

  • 我有一个docker正在运行,它会给我磁盘空间警告。如何增加docker空间并重新开始?(同一容器) 假设我想给15gb。

  • 我注意到Docker似乎在使用大量磁盘空间。我可以看到目录。docker/machine/machines/default是27.4GB 我最近清理了我没有使用的所有图像和容器。现在,当我运行时,我看到没有图像正在运行。 我还可以看到我有2个容器可用。 然后我可以看到我有3个图像。 它们怎么会占用近30GB的空间?