软件版本
docker-ce 17.03
storagedriver:device-mapper:direct-lvm
docker 启动一个容器后默认根分区大小为10GB,通过docker info可以看见默认大小为10G,有时会不够用需要扩展。
两种修改方式
静态扩展
启动容器查看容器分区大小
指定容器默认空间大小为20G
修改/etc/docker/daemon.json,添加dm.basesize=xxx
需要注意的是只能扩容不能缩减。
重启docker
此时还是不生效的,需要把镜像重新pull一遍
重新run一个
缺点:
- 非动态更改,改完后还需要重新启动docker
- 更改后镜像需要重新pull下来。
- 只能扩容不能缩减。
动态修改
以centos这个容器为例,动态修改这个容器默认空间为30G
创建个centos容器
找到对应的块设备
使用dmsetup table查看文件扇区信息
结果的第二个数字(41943040)是设备的大小,表示有多少个512字节的扇区,计算方法是(2010241024*1024/512)我们修改大小也只需要修改这个值。
将新的扇区大小写入,只需要修改第二个值
将修改后的容器存储文件激活
再次查看
发现扇区大小改好了
文件系统更新
ext4、ext3、ext3文件系统使用
xfs文件系统使用
优点:
- 动态修改,不需要修改docker启动参数,重启docker。
- 不用重新pull镜像,针对单个容器,控制灵活。
缺点:
- 上面用的方法只能是devicemapper的storage-driver。
- 只能扩容不能缩减。
建议:
实际使用中,数据还是尽量放数据卷中,放镜像中的话,会造成镜像太过于雍肿,就违背了容器本身设计的初仲了。