我有一个小问题。我有一个全新的 Red Hat Linux 服务器,并使用 Docker CE 的官方存储库安装了适用于 CentOS/Red Hat 的 Docker CE。现在我看到 docker 在 下创建了容器/var/lib/docker
,但我的问题是我在 下为我的数据使用了额外的分区/data/docker
。如何更改 CentOS/Red Hat 中 Docker 的默认根目录?
我尝试了一些 HOWTO,但遇到了同样的问题。我找不到配置。例如,我搜索以下文件:
/etc/default/docker
(我认为仅适用于 Debian/Ubuntu)/etc/systemd/system/docker.service.d/override.conf
(我的系统上找不到)/etc/docker/daemon.json
(我的系统上找不到)
如果我得到 docker 信息,我会看到:
Docker 根目录:/var/lib/docker
答案1
这有关控制 Docker 守护进程的 Docker 文档建议独立于平台的方法是:
编辑 /etc/docker/daemon.json 文件以包含该行
{
"data-root": "/mnt/docker-data",
(...)
}
where/mnt/docker-data
是您希望 docker 映像和容器所在的目录。
然后
sudo systemctl restart docker
您可以通过运行来检查它是否有效
docker info
并查找以 开头的行的内容Docker Root Dir:
。
答案2
停止所有正在运行的 docker 容器,然后停止 docker 守护进程。将“/var/lib/docker”目录移动到您想要保存此数据的位置。对你来说,这将是:
mv /var/lib/docker /data/
然后在 /var/lib 路径中为此 docker 目录创建符号链接:
ln -s /data/docker /var/lib/docker
启动 docker 守护进程和容器。
答案3
我使用的是 fedora 27 你可以看看 docker deamon 帮助
dockerd --help
--data-root string Root directory of persistent Docker state (default "/var/lib/docker")
停止docker服务
systemctl stop docker
移动 docker 默认文件夹。我移至 /data 文件夹下。
mv /var/lib/docker /data/.
打开服务文件
vi /usr/lib/systemd/system/docker.service
更改 ExecStart 变量的参数。
vi /usr/lib/systemd/system/docker.service
这个矿井。我还添加了调试参数。
ExecStart=/usr/bin/dockerd -D --data-root /data/docker
需要守护程序重新加载
systemctl daemon-reload
你可以开始服务了
systemctl start docker
是否可以在服务启动之前在命令行上进行测试
dockerd -D --data-root /data/docker
已经完成了。