更改 Docker (snap) 数据根文件夹

Rod*_*igo 9 docker ubuntu-20.04

我正在尝试将 docker 图像、容器等的默认数据文件夹更改为不同的路径。docker 的 Snap 安装在/var/snap/docker/common/var-lib-docker. data-root理论上我可以通过中的选项来改变它deamon.json。但是,如果我更改daemon.json添加"data-root": "/home/user/docker"泊坞窗,由于与标志冲突(标志总是具有前面描述的默认路径),因此添加泊坞窗将不会启动。

如果我停止它,我可以使用我的自定义路径启动 docker,然后像这样启动它:sudo snap start docker.dockerd --data-root=/home/user/docker。这不漂亮但有效。有没有办法在启动时更改 docker snap 标志或使其更喜欢 daemon.json 选项?

我读过这篇存档文章,它在 docker 版本 17 上处理了此类问题,但它并没有像我在网上找到的其他一些材料那样有太大帮助。我似乎符号链接可能是一种方式...

我使用的是 docker 19.03.11,snap 安装在 Ubuntu 20.04 上。

Ps:新路径位于作为我的主目录安装的第二个硬盘上。更改路径将节省我的系统 SSD 的空间。

感谢您的关注。

blo*_*elg 3

来自https://github.com/docker-snap/docker-snap/issues/3https://askubuntu.com/questions/550348/how-to-make-mount-bind-permanent,不完美的-但有效的解决方案似乎是/var/snap/docker/common/var-lib-docker/home/username/docker之间的绑定安装,这是我在使用 snap 安装 docker 之前拥有的先前的 docker 数据根。

因此,首先,清除daemon.json中的 data-root 选项。

然后使用以下命令在/etc/fstab末尾添加以下内容:

echo '/home/username/docker /var/snap/docker/common/var-lib-docker none bind' >> /etc/fstab
Run Code Online (Sandbox Code Playgroud)

重新启动后,您的 docker 数据根目录将存储在/home/username/docker中