最近新搭建了一台docker服务器,把本地镜像load导入的时候报错:devmapper:ThinPoolhas163029freedatablockswhichislessthanminimumrequired163840freedatablocks.Createmorefreespaceinthinpoolorusedm.min_free_spaceoptiontochangebehavior 。
查询了很多解决办法都是清除镜像容器
docker rm $(docker ps -q -f status=exited) docker volume rm $(docker volume ls -qf dangling=true) docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
我按照上面方法都没都没有解决问题,翻阅文档最后终于找到问题:
首先使用docker info查看Data Space Total默认的大小是100G,而data Space Available的剩余空间已经不足,Data Space Used莫名奇妙的已经使用了90多G了??我明明还没有存放几个镜像,怎么会使用这么多空间?去官网找了半天好像跟我服务器做的LVM有关系,现在暂时不管空间的问题,新服务器空间还挺充足,100G不够那我给200G总行了吧。
修改docker.service配置文件,一般默认在/lib/systemd/system/docker.service,找不到的就find搜索吧,在ExecStart=/usr/bin/dockerd 后,加入如下参数--storage-opt dm.basesize=10G --storage-opt dm.loopdatasize=200G --storage-opt dm.loopmetadatasize=5G (如果当前目录没法扩容的话可以在后面添加 -g /home/docker选项,把docker目录指定到home下)
vim /lib/systemd/system/docker.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --storage-opt dm.basesize=10G --storage-opt dm.loopdatasize=200G --storage-opt dm.loopmetadatasize=5G -H fd:// --containerd=/run/containerd/containerd.sock
dm.basesize 默认为10G,限制容器和镜像的大小
dm.loopdatasize 存储池大小,默认为100G
dm.loopmetadatasize 元数据大小,默认为2G
修改完成后重启docker
systemctl stop docker systemctl daemon-reload docker start docker
参考