我正在尝试将我的 docker 存储目录设置为默认值以外的目录,这是我在其他机器上所做的:
/etc/docker/daemon.json:
{
"data-root": "/mnt/x/y/docker_data"
}
Run Code Online (Sandbox Code Playgroud)
存储目录的位置
jeremyr@snorble:~$ ls -ltr /mnt/x/y
total 4
drwxrwxrwx 11 jeremyr 5001 122 Mar 19 08:14 docker_data
Run Code Online (Sandbox Code Playgroud)
使用 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)
Run Code Online (Sandbox Code Playgroud)
而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
Run Code Online (Sandbox Code Playgroud)
Docker 版本 17.05.0-ce,构建 89658be,在 debian 8.8 设置上。
有谁知道为什么 docker 不允许使用该目录作为数据根目录?
按照说明操作:
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
Run Code Online (Sandbox Code Playgroud)
在文件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"
Run Code Online (Sandbox Code Playgroud)
最后一个命令应该输出: Docker Root Dir: /mnt/x/y/docker_data
经过一番调查,我发现了一些过时的文章,包括这篇文章,他们提到了一些自信的解决方案,这些是典型的页面:
-g和--graph弃用发布:v17.05.0添加data-root在/etc/docker/daemon.json,该方法试图通过笔者的问题,
在大约十几个网页上阅读这些解决方案,得到了灵感:
不是一个很好的解决方案 - 不受欢迎,但有趣的部分在下面更新::
graph已被弃用。v17.05.0您可以data-root改用。
是的,graph=> data-root,而这--graph只是 的长形式-g,所以我在docker.service中的解决方案添加-g选项中尝试了这种替换,并且Ta da ~
小智 7
docker_data 上出现了一些问题。
解决方案:
| 归档时间: |
|
| 查看次数: |
7039 次 |
| 最近记录: |