ubuntu 通过软链接的方式修改 Docker 镜像默认存储位置以防止空间占满

发布时间 2023-07-08 21:17:30作者: cold_moon

和之前的 修改 conda 存储位置一样,我们同样可以 通过软链接的方式,修改 存储位置。

前文:

https://www.cnblogs.com/odesey/p/17218519.html

https://www.cnblogs.com/odesey/p/17512848.html

默认情况下 Docker 容器的存放位置在 /var/lib/docker 目录下面,可以通过下面命令查看具体位置:

# 默认存放位置
sudo docker info | grep "Docker Root Dir"
# 输出:Docker Root Dir: /var/lib/docker

解决默认存储容量不足的情况,最直接且最有效的方法就是挂载新的分区到该目录。但是在原有系统空间不变的情况下,所以采用软链接的方式,修改镜像和容器的存放路径达到同样的目的。

停掉 docker:

service docker stop

移动整个/var/lib/docker目录到目的路径,这里我们不使用 mv 命令,使用如下命令:

参考:https://www.cnblogs.com/odesey/p/17502903.html

# /var/lib/docker:源目录, 请注意这里不是 /var/lib/docker/ 
sudo rsync  -avz  --progress  --bwlimit=50000 /var/lib/docker  /media/h/share/ubuntu20.04/

然后删除:/var/lib/docker

sudo rm -r /var/lib/docker  # 你也可以用 rsync

建立软链接:

sudo ln -s /media/h/share/ubuntu20.04/docker /var/lib/docker
# /media/h/share/ubuntu20.04/docker: 真的放了东西
# /var/lib/docker: 快捷方式

重启:

service docker start
# Job for docker.service failed because the control process exited with error code.
# See "systemctl status docker.service" and "journalctl -xe" for details.

我的启动不了,查看错误信息:

sudo dockerd --debug
# ERRO[2023-07-08T20:14:20.939131329+08:00] failed to mount overlay: invalid argument     storage-driver=overlay2
# ERRO[2023-07-08T20:14:20.939145577+08:00] [graphdriver] prior storage driver overlay2 failed: driver not supported

在这里:https://zhuanlan.zhihu.com/p/107643520 , 我找到了答案:

the overlay and overlay2 drivers are supported on xfs backing filesystems, but only with d_type=true enabled
也就是说,用 overlay2 驱动,必须是以 xfs 作为后端的文件系统。

原因:一开始我装了ubuntu 和 win10 双系统,/media/h/share(其实就是我的 windows 的 D 盘) 是 windows 下格式化,对应的文件系统格式是 ntfs。

df -h
# 文件系统        容量  已用  可用 已用% 挂载点
# /dev/nvme0n1p4  242G  111G  132G   46% /media/h/share

sudo blkid
# /dev/nvme0n1p4: LABEL="xx" UUID="xx" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="xx"

解决方法 :再买一块硬盘,因为我的不太够用,格式化为 xfs 格式:

  1. 格式化磁盘,更改文件系统为xfs
  2. 挂载磁盘
  3. 按上述步骤再做一遍软链接

我还是先移动回来吧,买了新的硬盘再说!

# 删除软链接
sudo unlink /var/lib/docker
# 移动回来
sudo mv /media/h/share/ubuntu20.04/docker /var/lib/
# 重启成功
service docker start

其他修改位置的方法:http://www.yunweipai.com/39771.html