docker镜像大于10G无法导入,修改镜像保存位置


一,修改镜像位置




vi      /lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -g /data/docker/ -H fd://

#添加  -g    /data/docker   选项,停止docker修改,重启后之前的数据丢失
也可对/var/lib/docker  做软连接,数据同样会丢失


##还有一种据说这样
ExecStart=/usr/bin/dockerd --graph=/data/docker --storage-driver=overlay --registry-mirror=https://jxus37ad.mirror.aliyuncs.com




###摘自别人
systemctl stop docker
创建新的docker目录
mkdir -p /home/modules/docker/lib

迁移/var/lib/docker目录下面的文件到/home/modules/docker/lib,迁移后的完成docker路径:/home/modules/docker/lib/docker
rsync -avz /var/lib/docker/ /home/modules/docker/lib/

配置 /etc/systemd/system/docker.service.d/devicemapper.conf
查看/etc/systemd/system/docker.service.d目录及devicemapper.conf是否存在。如果不存在,就新建
mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd  --graph=/home/modules/docker/lib/docker


#注意,直接修改systemctl docker  的启动文件就行了


systemctl daemon-reload
systemctl restart docker
systemctl enable docker

查看是否生效

docker  info |  grep  -i   root


启动成功后,再确认之前的镜像是否还在

docker images  

二,docker 镜像大于10G导致导入失败

报错
4d44c9e9ac1c: Loading layer [==================================================>]  2.893GB/2.893GB
ApplyLayer exit status 1 stdout:  stderr: write /root/anaconda3/lib/libcaffe.so.1.0.0: no space left on device

##原因是导入时元数据缓冲区最大为10G,需要扩大,其实不是/var/lib/docker所在目录的空间不足。

处理:
设置启动参数

停止docker  
修改
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --storage-opt dm.loopdatasize=8G \   
          --storage-opt dm.loopmetadatasize=4G \
          --storage-opt dm.basesize=8G \
 
重点在后三条
systemctl daemon-reload 
systemctl start docker 
docker info


dm.loopdatasize=2000G是指存放数据的数据库空间为2t,默认是100g
dm.loopmetadatasize=10G是存放Metadata数据空间为10g,默认是2g
dm.fs=ext4是指容器磁盘分区为ext4
dm.basesize=20G是指容器根分区默认为20g,默认是10g


参考:
http://ifindever.com/archives/516.html
https://github.com/moby/moby/issues/21171
https://testerhome.com/topics/6184/show_wechat



免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM