怎么迁移 docker 的工作目录

2022-05-31 12:26:02 +08:00
 ghmum

以前不知道 docker 的占用磁盘那么大,现在想迁移一下 docker 的工作目录,按照网上写的都行不通。

centos7 下,网上写的基本都是把目前移到新位置,然后在 /etc/docker/daemon.json 里加一行

data-root:目录 或者 graph:目录

我试了一下,都会导致 docker 服务无法启动。

请问怎么迁移

1527 次点击
所在节点    问与答
15 条回复
zhlxsh
2022-05-31 12:44:43 +08:00
要重新导镜像的。
这个方法其实是修改工作目录,并没有迁移的动作。
可以试一下把 docker 服务停了,然后把文件移动到你想要的位置,再修改配置为你移动的位置,最后启 docker 。我没试过,生产环境三思后行
Nitroethane
2022-05-31 12:51:59 +08:00
不应该看下 docker 服务的报错日志?
lixiang2017
2022-05-31 13:01:36 +08:00
不用重新导镜像, 别改 docker config, 生产环境没问题
1. stop docker kubelet
2. /var/lib/docker 移动到大磁盘下
3. 建立软链,ln -s 实际目录 /var/lib/docker
4. start docker kubelet
ghmum
2022-05-31 14:15:04 +08:00
@zhlxsh 我就是这么做的,这么做完之后 docker 服务直接不能启动了
@Nitroethane 我看的日志,但是应该没有说到具体的错误原因
@lixiang2017 这么试过了,可以启动 docker 服务。但是原来的 docker ps -a 和 docker image ls 都查不到原来的容器和镜像了。这个有办法解决吗?
micean
2022-05-31 14:31:52 +08:00
启动不了的话先检查 /etc/systemd/system 里 docker 的配置
Silently
2022-05-31 14:52:11 +08:00
设置 docker 数据目录
service docker stop
把 docker 的文件都迁移到新数据目录中 /mnt/disk/docker/,命令为:
rsync -avz /var/lib/docker/ /mnt/disk/docker/
编辑 /etc/docker/daemon.json 配置文件新增 data-root 参数
vim /etc/docker/daemon.json
增加以下内容
"data-root": "/mnt/disk/docker/"

保存退出:wq
sudo systemctl daemon-reload
sudo systemctl restart docker

检查是否生效
docker info
ghmum
2022-05-31 14:57:41 +08:00
@Silently 就是这么做的,区别是我把 docker 目录放在了根目录下。做完之后 docker 服务无法启动了
choury
2022-05-31 14:59:34 +08:00
起不来贴日志啊,啥都没有怎么知道什么原因呢
ghmum
2022-05-31 15:02:45 +08:00
@choury
-- Unit docker.service has begun starting up.
5 月 31 15:02:00 bix dockerd[8159]: unable to configure the Docker daemon with file /etc/docker/daemon.j
5 月 31 15:02:00 bix systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
5 月 31 15:02:00 bix 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.
5 月 31 15:02:00 bix systemd[1]: Unit docker.service entered failed state.
5 月 31 15:02:00 bix systemd[1]: docker.service failed.
ghmum
2022-05-31 15:04:05 +08:00
docker/daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
"data-root":"/docker/"
}
hxsf
2022-05-31 15:12:26 +08:00
@ghmum #10 json 不加逗号?
报错 ` unable to configure the Docker daemon with file /etc/docker/daemon.` 这还不去检查配置文件吗?
ghmum
2022-05-31 15:13:43 +08:00
抱歉各位大佬。眼瞎,docker 服务不能启动的原因是配置文件格式问题,少了逗号。

请问移动 docker 目录之后,原来的镜像和容器都不见了,这个怎么处理呢
dier
2022-05-31 15:31:49 +08:00
@ghmum #10 你先看一下没迁移之前的 /var/lib/docker 目录的结构,再看一下你迁移之后 软链接 的目录结构。应该是有问题,所以才会找不到原来的镜像和容器。我也做过同样的操作,软链接完重启 docker 服务就正常了
ghmum
2022-05-31 15:43:56 +08:00
@dier 确实目录结构问题,我是用 rsync 拷贝的文件,但是 container 没有被拷过去,不知道是什么原因
julyclyde
2022-06-01 10:54:25 +08:00
@Silently 改 docker 配置文件并不需要 systemctl daemon-reload

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856422

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX