簡體   English   中英

Docker容器驅動器與主機上的可用硬盤驅動器空間不匹配

[英]Docker container drive does not match available hard drive space on host

我已經將新的自定義映像加載到遠程RedHat 7 docker主機實例中。 運行新容器時,該容器不會嘗試使用整個磁盤。 我得到以下是容器上df -h的輸出:



    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

但是主機系統有更多空間:



    Filesystem                   Size  Used Avail Use% Mounted on
    /dev/mapper/vg_root-lv_root   49G   25G   25G  51% /
    devtmpfs                     1.9G     0  1.9G   0% /dev
    tmpfs                        1.9G     0  1.9G   0% /dev/shm
    tmpfs                        1.9G  8.5M  1.9G   1% /run
    tmpfs                        1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/mapper/vg_root-lv_home  9.8G   73M  9.7G   1% /home
    /dev/sda1                    497M   96M  402M  20% /boot

似乎docker正在將9.8 gigs / home映射分配給容器的整個驅動器。 所以我想知道是否有我看到這個的原因?

問題

我能夠解決此問題。 該問題與正在安裝到容器的卷無關(即,它沒有在容器上安裝原始卷作為根卷)。 發生問題是因為Docker在RedHat中使用device-mapper來管理其容器的文件系統。 默認情況下,容器將以10G的空間開頭。 通常,docker將使用AUFS來管理容器的文件系統。 在大多數基於Debian的Linux版本上就是這種情況,但是RedHat改用device-mapper。

解決方案

幸運的是,設備映射器的大小可以在docker中配置。 首先,我必須停止服務,並刪除所有圖像/容器。 (注意:沒有從中返回的內容,因此請根據需要備份所有圖像)。

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

然后,使用所需的size參數手動啟動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文檔中找到了存儲選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM