根据评论的建议,我利用 Docker systemd 文档 来改进这个答案。下面的过程不需要重新启动并且更加干净。
首先创建自定义配置的目录和文件:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo $EDITOR /etc/systemd/system/docker.service.d/docker-storage.conf
17.06-ce 之前的 docker 版本 粘贴:
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"
17.06-ce之后的 docker 粘贴:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"
替代方法 daemon.json
我最近在 Fedora 25 上尝试了上述步骤 , 但似乎不起作用。除了 /etc/docker/daemon.json
进行简单的修改外,还有以下方法:
{
"graph": "/mnt",
"storage-driver": "overlay"
}
尽管使用该方法,您仍必须重新加载配置并重新启动 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
要确认 Docker 已重新配置:
docker info|grep "loop file"
在最近的版本(17.03)中需要不同的命令:
docker info|grep "Docker Root Dir"
输出应如下所示:
Data loop file: /mnt/devicemapper/devicemapper/data
Metadata loop file: /mnt/devicemapper/devicemapper/metadata
或者:
Docker Root Dir: /mnt
然后你就可以安全地删除旧的 Docker 存储:
rm -rf /var/lib/docker