先看一下docker info的内容
# docker info
Containers: 6
Running: 6
Paused: 0
Stopped: 0
Images: 2
Server Version: 1.11.0
Storage Driver: devicemapper
Pool Name: docker-253:0-1611278273-pool
Pool Blocksize: 65.54 kB
Base Device Size: 21.47 GB -- 容器和镜像能使用的最大值,默认是10G
Backing Filesystem: ext4 -- 容器磁盘格式,默认是docker服务所在机器的磁盘格式
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 17.94 GB -- docker使用的空间
Data Space Total: 214.7 GB -- docker最大可以使用的空间
Data Space Available: 196.8 GB
Metadata Space Used: 10.87 MB
Metadata Space Total: 4.295 GB
Metadata Space Available: 4.284 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
看完docker info描述,分析了一下我需要改的值有三处,容器的空间、容器的磁盘格式(我的机器磁盘格式是XFS,不支持resize2fs动态扩容,所以干脆也改了)、docker的空间。具体操作如下
systemctl stop docker
rm -rf /var/lib/docker
docker daemon --storage-opt dm.basesize=20G --storage-opt dm.loopdatasize=200G --storage-opt dm.loopmetadatasize=4G --storage-opt dm.fs=ext4
需要强调的是rm -rf /var/lib/docker 会删掉所有docker容器、镜像,需要提前备份。且不做这一步操作的话,即使修改了配置,重启服务,也无法生效。
或者改配置,把上述那堆参数加到/usr/lib/systemd/system/docker.service的ExecStart=中
关于动态扩容的方法参考https://segmentfault.com/a/1190000002931564