Docker容器驱动器与主机上的可用硬盘驱动器空间不匹配

时间:2015-06-19 21:44:42

标签: docker

我已将新的自定义图像加载到远程RedHat 7泊坞窗主机实例中。运行新容器时,容器不会尝试使用整个磁盘。我得到以下是容器上df -h的输出:

<httpRuntime targetFramework="4.5.1" />

但主机系统有更多空间:



    rootfs                9.8G  9.3G     0 100% /
    /dev/mapper/docker-253:0-67515990-5700c262a29a5bb39d9747532360bf6a346853b0ab1ca6e5e988d7c8191c2573
                          9.8G  9.3G     0 100% /
    tmpfs                 1.9G     0  1.9G   0% /dev
    shm                    64M     0   64M   0% /dev/shm
    /dev/mapper/vg_root-lv_root
                           49G   25G   25G  51% /etc/resolv.conf
    /dev/mapper/vg_root-lv_root
                           49G   25G   25G  51% /etc/hostname
    /dev/mapper/vg_root-lv_root
                           49G   25G   25G  51% /etc/hosts
    tmpfs                 1.9G     0  1.9G   0% /proc/kcore
    tmpfs                 1.9G     0  1.9G   0% /proc/timer_stats

似乎docker正在将9.8演出的/ home映射分配给容器的整个驱动器。所以我想知道我是否有理由看到这个?

1 个答案:

答案 0 :(得分:0)

问题

我能够解决这个问题。该问题与安装到容器的卷无关(即,未将主卷安装为容器上的根卷)。出现此问题的原因是Docker使用RedHat中的device-mapper来管理其容器的文件系统。默认情况下,容器将以10G空间开始。通常,docker将使用AUFS来管理容器的文件系统。大多数基于Debian的Linux版本就是这种情况,但RedHat使用的是device-mapper。

解决方案

幸运的是,设备映射器大小可以在docker中配置。首先,我不得不停止我的服务,并删除我的所有图像/容器。 (注意:没有回来,所以根据需要备份所有图像。)

sudo service stop docker && sudo rm -irf /var/lib/docker

然后,使用所需的大小参数手动启动docker实例:

sudo docker -d --storage-opt dm.basesize=[DESIRED_SIZE]

在我的情况下,我将容器大小增加到13G:

sudo docker -d --storage-opt dm.basesize=13G

然后在docker仍然运行时,拉/重新加载所需的图像,启动一个容器,现在大小应该与所需的大小匹配。

接下来,我将docker systemd服务文件设置为启动时使用所需的容器大小。这是必需的,以便docker服务将以所需大小启动容器。我编辑了/ etc / sysconfig / docker文件中的OPTIONS变量。它现在看起来像这样:

OPTIONS='--selinux-enabled --storage-opt dm.basesize=13G'

最后,重新启动docker服务:

sudo service stop docker

参考文献

[1] https://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/ - 这就是我发现RedHat使用device-mapper的方式,而device-mapper的限制为10G。

[2] https://docs.docker.com/reference/commandline/cli/ - 在dockers文档中找到存储选项。