如果您使用的是 devicemapper 图形引擎,那么 storage-opt dm.basesize 是您尝试做的事情的方法。您需要在更改配置后清除 /var/lib/docker(请注意,这将擦除您当前拥有的所有映像,即使您使用直接块设备来配置数据和元数据池设备)。
以下是我遵循的步骤:
$ docker run -ti base/arch df -h /
Filesysem Size Used Avail Use% Mounted on
/dev/mapper/docker-254:7-73733-b8dc...6d28a 9.8G 335M 8.9G 4% /
所以我目前有默认的 10G 基本大小。
首先,更改配置添加“--storage-opt dm.basesize=5G”:
# vim /etc/systemd/system/docker.service
...
ExecStart=/usr/bin/docker -d -H fd:// -s devicemapper \
--storage-opt dm.datadev=/dev/vg01/docker-dm-data \
--storage-opt dm.metadatadev=/dev/vg01/docker-dm-meta \
--storage-opt dm.basesize=5G
然后,停止 Docker(确保所有容器预先停止,重新加载配置,清理 /var/lib/docker 并重新启动 Docker:
# systemctl stop docker
# systemctl daemon-reload
# rm -rf /var/lib/docker
# systemctl start docker
“docker images”应该确认没有图像存在。
现在重新运行测试:
$ docker run -ti base/arch df -h /
Unable to find image 'base/arch:latest' locally
Pulling repository base/arch
a64697d71089: Download complete
511136ea3c5a: Download complete
4bbfef585917: Download complete
Status: Downloaded newer image for base/arch:latest
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-254:7-66094...f635ac65 4.8G 322M 4.3G 7% /
我们有一个 5Gb 的基本大小。