我正在使用 Docker 18.09,我正在尝试为我的工作构建一些映像。问题是图像总是在根目录中,确切地说/var/lib/docker/overlay2
在/var/docker/
.由于我的根目录中没有足够的空间,所以我想将此默认目录更改为我的另一个磁盘,但我在互联网上查看的解决方案都不适合我。
我已经经历了这些,但没有一个有效:
https://forums.docker.com/t/how-do-i-change-the-docker-image-installation-directory/1169
https://medium.com/@ibrahimgunduz34/how-to-change-docker-data-folder-configuration-33d372669056
如何更改 docker 镜像安装目录?
存储 docker 相关数据(容器、镜像等)的默认目录是/var/lib/docker
。
要覆盖此缺省位置,请使用 -g 选项。
在启动码头管理员守护程序时使用-g option
.
dockerd -g /mnt/path/to/docker/dir
在您的情况下,最好的选择是在某个挂载点将一些外部存储连接到计算机。并在 -g 选项中提及该挂载点。
希望这有帮助。
更新:
-g option
已弃用。使用--data-root
选项。检查这个。
我在与rke2 一起使用的 containerd 时也遇到了类似的问题,我将 RKE2 与 containerd 一起使用,它将所有图像存储在/var/lib/rancher/rke2 上,这导致 VMs'/' 分区一直变满。 我想将 containerd 根目录移动到自定义目录
我在 rke 服务文件中更改了 rke 代理启动命令,它起作用了。
- 创建了一个新的 FS/containerdata/containerd 并配置了 rke 服务,以指向此目录以获取容器数据
- change/usr/local/lib/systemd/system/rke2-agent.service
ExecStart=/usr/local/bin/rke2 agent --data-dir /containerdata/containerd/
- Reload and retart rke2-agent.service
systemctl daemon-reload
systemctl restart rke2-agent.service
- 这可能会导致 Pod 不稳定,但系统会随着时间的推移而稳定。
当我也遇到这个问题时,我使用了以下技术,并且使用具有更大大小的不同文件系统是唯一可用的选项。
-
停止码头工人服务。 sudo systemctl stop docker.service
-
编辑 docker.service 文件以将新目录包含在 ExecStart 行中,如下所示。 ExecStart=/usr/bin/dockerd -g/u01/docker-H fd://--containerd=/run/containerd/containerd.sock
重新加载守护程序 sudo systemctl daemon reload
重启码头工人 sudo systemctl start docker.service
注意:docker.service 文件路径在您运行 systemctl stop docker.service 时显示
解决此问题的一个更简单直接的方法是,一旦移动现有文件夹,只需创建一个指向新路径的符号链接,如下所示。
sudo systemctl stop docker.service
sudo mv/var/lib/docker//
sudo ln -s//var/lib/docker
sudo systemctl start docker.service
Linux 的方法是创建一个从/var/lib/docker 到新位置的符号链接。
这是一个例子
sudo systemctl stop docker
sudo rsync -aqxP /var/lib/docker/ /mnt/docker
sudo rm -rf /var/lib/docker
sudo ln -s /mnt/docker /var/lib/docker
sudo systemctl start docker