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

时间:2018-09-24 22:42:50

标签: docker ubuntu-18.04

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

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

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

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

我尝试通过遵循网络上的一些教程……徒劳地将docker的根目录更改为/raid/docker-data/

these solutions don't work either

  • /etc/default/docker:我找不到这个
  • 与第二种解决方案一样:docker无法找到他的文件夹。

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

最近几个月有人能做到这一点吗?

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


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

4 个答案:

答案 0 :(得分:0)

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

systemctl stop docker
mv /var/lib/docker /raid/docker-data
ln -s /raid/docker-data /var/lib/docker
systemctl start docker

您还可以通过/etc/docker/daemon.json中的设置向docker告知新位置。如果没有此文件,则可以使用以下内容创建一个文件:

{
  "data-root": "/raid/docker-data"
}

我建议第一个解决方案,因为您会发现许多第三方工具都将docker放置在/ var / lib / docker中。

答案 1 :(得分:0)

对不起,您的回复很晚。

在更仔细地研究它之后,来解决我的问题:

我在Ubuntu 18.04上,我只能通过snap install(或removedocker添加或删除docker服务。

/var/snap/上安装一个docker party

所以我这样转置您的解决方案:

mv /var/snap/ /raid/snap
ln -s /raid/snap /var/snap

最后我通过snap install docker

安装docker

我使用sudo docker info进行了测试,并且出现了此错误消息:

cannot perform operation: mount --rbind /var/snap /tmp/snap.rootfs_RRAjdq//var/snap: Permission denied

({snap.rootfs_*,因为结尾不会在每次命令启动时停止更改)

但是安装顺利,显然,某些docker当然在/raid/snap上。

答案 2 :(得分:0)

我再次向您提供可以让我解决此问题的解决方案。

cannot perform operation: mount --rbind /var/snap /tmp/snap.rootfs_RRAjdq//var/snap: Permission denied

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

  

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

     

当/ home是真实目录可正常工作时,请参见下面的输出

就我而言:

当/ raid / snap是一个符号链接时,捕捉不起作用。

当/ var / snap是真实目录时,它会工作。

我删除了docker。我不得不重新安装snapcraf(snapd),因为我对其进行了文件修改(错误方式)

从那里,我停止了已锁定的服务:

sudo mv /var/snap/ /raid/snap
sudo mount --rbind /raid/snap /var/snap

我启动了快照服务。

sudo snap install docker

sudo docker info <=测试

sudo docker run hello-world <=测试

我在fstab上固定了我的坐骑:

/raid/snap      /var/snap      none      bind

我重新启动了OS:至少对于我来说,它可以正常工作。 (我一直在检查文件一致性处理,以检查docker文件在突击检查中是否进展顺利...

答案 3 :(得分:0)

更改 Docker 根存储(数据路径):

运行此命令以查找 docker 数据路径:

$ sudo docker info | grep -i root

默认路径:

root@user-testing-HP-ProBook-4540s:/etc/docker# docker info | grep -i root
 Root Dir: /var/lib/docker/aufs
WARNING: No swap limit support
Docker Root Dir: /var/lib/docker

首先,停止泊坞窗:

sudo service docker stop

将当前的数据路径复制到新路径:

sudo rsync -aqxP /var/lib/docker /data/docker-data/

在 (/etc/docker/daemon.json) 文件中添加以下内容: (如果文件不存在,请使用 vim 或您的收藏编辑器创建文件(sudo vim /etc/docker/deamon.json))

{
  "data-root": "/data/docker-data/docker"
}

符合 cat 命令:

cat /etc/docker/deamon.json

输出如下:

root@user-testing-HP-ProBook-4540s:/home/user/Downloads# cat /etc/docker/daemon.json 
{
  "data-root": "/data/docker-data/docker"
}

root@user-testing-HP-ProBook-4540s:/home/user/Downloads# 

启动泊坞窗:

sudo service docker start

现在检查根(数据路径)路径:

$ sudo docker info | grep -i root

输出将是这样的:

root@user-testing-HP-ProBook-4540s:/home/user/Downloads# sudo docker info | grep -i root
 

Root Dir: /data/docker-data/docker/aufs
WARNING: No swap limit support
Docker Root Dir: /data/docker-data/docker

root@user-testing-HP-ProBook-4540s:/home/user/Downloads#