如何在 ubuntu 18.04 LTS 上更改 docker 的根目录?(docker 更改卷的位置)

Man*_*anu 4 docker ubuntu-18.04

我安装了 ubuntu 18.04 LTS 并检查了 docker (17.06.2-ce) 的设置以同时安装。

我通过启动 hello-world ( sudo docker run hello-world)进行了测试:

[...] Docker 向您问好!此消息表明您的安装似乎工作正常。[...]

我在名为 的文件夹上安装了一个软件raid /raid,并/docker-data在其中创建了一个文件夹。

我尝试/raid/docker-data/按照网络上的几个教程更改我的 docker 的根目录以将其放入...徒劳无功。

这些解决方案也不起作用

  • /etc/default/docker : 这个找不到
  • 如第二个解决方案:docker 找不到他的文件夹。

Docker 根目录:/var/snap/docker/common/var-lib-docker

最近几个月有没有人设法做到这一点?

(这是我第三次安装 ubuntu,我刚刚把它弄坏了......)


显然在 Ubuntu 18.04 LTS 上,docker 17.06.2-它需要与 snap 配合使用,我打算以这种方式进行挖掘。我稍后会尝试回复答案...

BMi*_*tch 6

常见的解决方案是移动数据并创建符号链接:

systemctl stop docker
mv /var/lib/docker /raid/docker-data
ln -s /raid/docker-data /var/lib/docker
systemctl start docker
Run Code Online (Sandbox Code Playgroud)

您还可以使用 /etc/docker/daemon.json 中的设置告诉 docker 新位置。如果你没有这个文件,你可以创建一个包含以下内容的文件:

{
  "data-root": "/raid/docker-data"
}
Run Code Online (Sandbox Code Playgroud)

我会推荐第一个解决方案,因为您会发现许多 3rd 方工具都希望 docker 位于 /var/lib/docker 中。


Man*_*anu 1

我回来给你提供解决方案,让我能够解决这个问题。

cannot perform operation: mount --rbind /var/snap /tmp/snap.rootfs_RRAjdq//var/snap: Permission denied
Run Code Online (Sandbox Code Playgroud)

我知道为什么:https ://bugs.launchpad.net/snapcraft/+bug/1620771 :

当 /home 是符号链接时,快照不起作用。

当 /home 是真实目录时,快照可以工作,请参阅下面的输出

就我而言:

当 /raid/snap 是符号链接时,快照不起作用。

当 /var/snap 是真实目录时,快照可以工作。

我删除了docker。我不得不重新安装 snapcraf (snapd),因为我留下了它的文件修改(错误的方式)

从那里,我停止了 snapd 服务:

sudo mv /var/snap/ /raid/snap
sudo mount --rbind /raid/snap /var/snap
Run Code Online (Sandbox Code Playgroud)

我启动了快照服务。

sudo snap install docker
Run Code Online (Sandbox Code Playgroud)

sudo docker info<= 测试

sudo docker run hello-world<= 测试

我在 fstab 上修复了我的安装:

/raid/snap      /var/snap      none      bind
Run Code Online (Sandbox Code Playgroud)

我重新启动了我的操作系统:它有效,至少对我来说是这样。(我检查了整个文件一致性处理,以查看 docker 文件在 raid 中是否运行良好......