docker集装箱的rootfs大小是如何决定的?

在一个系统上, docker container的磁盘大小如下所示:

 root@b65c6518f583:/# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-202764498-b65c6518f5837667e7021971a97aebd382dddca6b3ecf4167472ebe17f16aace 99G 268M 94G 1% / tmpfs 5.8G 0 5.8G 0% /dev shm 64M 0 64M 0% /dev/shm tmpfs 5.8G 0 5.8G 0% /sys/fs/cgroup tmpfs 5.8G 96K 5.8G 1% /run/secrets /dev/mapper/rhel-root 50G 20G 31G 40% /etc/hosts 

我们可以看到rootfs大小是99G 。 而在另一个系统中, docker container的磁盘大小是这样的:

 53ac740bd09b:/ # df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-8:8-4202821-2a6f330df1b7b37d55a96b098863f81e4a7f1c39fcca3f5fa03b57998cb33427 9.8G 4.4G 4.9G 48% / tmpfs 126G 0 126G 0% /dev tmpfs 126G 0 126G 0% /sys/fs/cgroup /dev/sda8 97G 11G 82G 12% /data shm 64M 0 64M 0% /dev/shm 

rootfs大小只有9.8G

docker集装箱的rootfs大小是如何决定的? 我如何修改rootfs大小的值?

容器的默认大小是10 GB,您可以更改它,从中提取

https://docs.docker.com/engine/reference/commandline/daemon/

dm.basesize

指定创build基础设备时使用的大小,这限制了图像和容器的大小。 默认值是10G。 请注意,精简设备本质上是“稀疏”的,所以大部分为空的10G设备不会在池中使用10 GB的空间。 但是,文件系统将会使用更多的空间来存放空间较大的设备。

在守护进程重启时,可以增加基本设备的大小,这将允许所有将来的映像和容器(基于这些新映像)成为新的基本设备大小。

使用示例:

$ docker守护进程–storage-opt dm.basesize = 50G

这将增加基础设备的大小到50G。 如果现有基础设备大小大于50G,则Docker守护进程将引发错误。 用户可以使用此选项来扩展基本设备尺寸,但不允许收缩。

该值影响可能已经被初始化并被拉出的图像inheritance的系统范围的“基本”空文件系统。 通常,对此值的更改需要额外的步骤才能生效:

$ sudo服务docker停止

$ sudo rm -rf / var / lib / docker

$ sudo服务docker启动

使用示例:

$ docker守护进程–storage-opt dm.basesize = 20G