我正在尝试将docker存储目录设置为默认值,这是我在其他计算机上完成的操作:
/etc/docker/daemon.json:
{
"data-root": "/mnt/x/y/docker_data"
}
存储目录类似于
jeremyr@snorble:~$ ls -ltr /mnt/x/y
total 4
drwxrwxrwx 11 jeremyr 5001 122 Mar 19 08:14 docker_data
在放置daemon.json文件的情况下,sudo systemctl restart docker
命中Job for docker.service failed
(如果没有daemon.json,则docker可以正常重启,而docker run hello-world
可以正常运行)。放置daemon.json后,journalctl -xn
显示
Mar 25 14:20:33 bolt88 systemd[1]: docker.service start request repeated too quickly, refusing to start.
Mar 25 14:20:33 bolt88 systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has failed.
--
-- The result is failed.
Mar 25 14:20:33 bolt88 systemd[1]: Unit docker.service entered failed state.
Mar 25 14:20:34 bolt88 sudo[23961]: jeremyr : TTY=pts/18 ; PWD=/home/jeremyr ; USER=root ; COMMAND=/bin/journalctl -xn
Mar 25 14:20:34 bolt88 sudo[23961]: pam_unix(sudo:session): session opened for user root by jeremyr(uid=0)
而systemctl status docker.service
仅显示code=exited, status=1/FAILURE
在dmesg中,我看到了:
1547:[Mon Mar 25 14:21:41 2019] aufs au_opts_verify:1570:dockerd[20714]: dirperm1 breaks the protection by the permission bits on the lower branch
1548-[Mon Mar 25 14:21:41 2019] device veth34d1dfd entered promiscuous mode
1549-[Mon Mar 25 14:21:41 2019] IPv6: ADDRCONF(NETDEV_UP): veth34d1dfd: link is not ready
1550-[Mon Mar 25 14:21:41 2019] IPv6: ADDRCONF(NETDEV_CHANGE): veth34d1dfd: link becomes ready
1551:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered forwarding state
1552:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered forwarding state
1553:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered disabled state
1554-[Mon Mar 25 14:21:41 2019] device veth34d1dfd left promiscuous mode
1555:[Mon Mar 25 14:21:41 2019] docker0: port 1(veth34d1dfd) entered disabled state
1556-[Mon Mar 25 14:21:59 2019] systemd-sysv-generator[20958]: Ignoring creation of an alias umountiscsi.service for itself
Docker版本17.05.0-ce,内部版本89658be,基于debian 8.8设置。
有人知道为什么docker不允许将该目录用作数据根吗?
答案 0 :(得分:2)
docker_data上的某处关闭。
解决方案:
答案 1 :(得分:0)
好吧,我不是Docker的专家,但是我在您的日志中看到“ dirperm1通过较低分支的权限位破坏了保护”。我也看到了这一点。 “ drwxrwxrwx 11杰里米5001 122 Mar 19 08:14 docker_data”
据我所知,docker守护进程需要对该目录的访问权限。 5001代表“泊坞窗”组吗?
但是,如果您以root权限运行守护程序,则不应发生。
答案 2 :(得分:0)
按照说明进行操作:
sudo systemctl stop docker
sudo rsync -axPS /var/lib/docker/ /mnt/x/y/docker_data #copy all existing data to new location
sudo vi /lib/systemd/system/docker.service # or your favorite text editor
在文件 docker.service 中找到这样的一行:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
向其中添加--data-root /mnt/x/y/docker_data
(一行):
ExecStart=/usr/bin/dockerd --data-root /mnt/x/y/docker_data -H fd:// --containerd=/run/containerd/containerd.sock
保存并退出,然后
sudo systemctl daemon-reload
sudo systemctl start docker
docker info | grep "Root Dir"
最后一个命令应输出:Docker Root Dir: /mnt/x/y/docker_data
经过一番调查,我发现了一些过时的文章,包括这篇文章,他们提到了一些有信心的解决方案,这些都是典型的页面:
add data-root
in /etc/docker/daemon.json,问题作者尝试的方法,
在大约十二个网页上阅读这些解决方案,并得到启发:
How To Change Docker Data Folder Configuration
不是一个很好的解决方案-并不受欢迎,但是有趣的部分在更新::
graph
已在v17.05.0
中弃用。您可以改用data-root
。
是的,graph
=> data-root
,而--graph
只是-g
的长形式,因此我在解决方案add -g
option in docker.service中尝试了这种替换,和 Ta da〜
答案 3 :(得分:0)
检查您机器的 docker 版本
% Training sample of 15 points
P = [-4 -2 -4 -3 6 6 8 7 -2 -4 -2 -3 3 5 4 6;
-2 -2 -4 -4 9 6 6 4 6 4 4 2 -1 -1 -3 1];
% Results of classification of training sample points
T1 = [1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; % Classification I (left to right)
T2 = [0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0]; % Classification II (top-down)
我遇到了同样的问题,在将 docker 升级到可用的最新版本后它得到了解决。
即使是 docker 官网上的文档也没有提到类似的东西。
升级 docker 后, 通过
重启dockerdocker --version
错误将消失,新的更改将开始反映。