V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ghmum
V2EX  ›  问与答

怎么迁移 docker 的工作目录

  •  
  •   ghmum · 182 天前 · 964 次点击
    这是一个创建于 182 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    请问怎么迁移

    15 条回复    2022-06-01 10:54:25 +08:00
    zhlxsh
        1
    zhlxsh  
       182 天前 via iPhone
    要重新导镜像的。
    这个方法其实是修改工作目录,并没有迁移的动作。
    可以试一下把 docker 服务停了,然后把文件移动到你想要的位置,再修改配置为你移动的位置,最后启 docker 。我没试过,生产环境三思后行
    Nitroethane
        2
    Nitroethane  
       182 天前 via iPhone
    不应该看下 docker 服务的报错日志?
    lixiang2017
        3
    lixiang2017  
       182 天前 via Android
    不用重新导镜像, 别改 docker config, 生产环境没问题
    1. stop docker kubelet
    2. /var/lib/docker 移动到大磁盘下
    3. 建立软链,ln -s 实际目录 /var/lib/docker
    4. start docker kubelet
    ghmum
        4
    ghmum  
    OP
       182 天前
    @zhlxsh 我就是这么做的,这么做完之后 docker 服务直接不能启动了
    @Nitroethane 我看的日志,但是应该没有说到具体的错误原因
    @lixiang2017 这么试过了,可以启动 docker 服务。但是原来的 docker ps -a 和 docker image ls 都查不到原来的容器和镜像了。这个有办法解决吗?
    micean
        5
    micean  
       182 天前
    启动不了的话先检查 /etc/systemd/system 里 docker 的配置
    Silently
        6
    Silently  
       182 天前 via iPhone
    设置 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
        7
    ghmum  
    OP
       182 天前
    @Silently 就是这么做的,区别是我把 docker 目录放在了根目录下。做完之后 docker 服务无法启动了
    choury
        8
    choury  
       182 天前
    起不来贴日志啊,啥都没有怎么知道什么原因呢
    ghmum
        9
    ghmum  
    OP
       182 天前
    @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
        10
    ghmum  
    OP
       182 天前
    docker/daemon.json

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

    请问移动 docker 目录之后,原来的镜像和容器都不见了,这个怎么处理呢
    dier
        13
    dier  
       182 天前
    @ghmum #10 你先看一下没迁移之前的 /var/lib/docker 目录的结构,再看一下你迁移之后 软链接 的目录结构。应该是有问题,所以才会找不到原来的镜像和容器。我也做过同样的操作,软链接完重启 docker 服务就正常了
    ghmum
        14
    ghmum  
    OP
       182 天前
    @dier 确实目录结构问题,我是用 rsync 拷贝的文件,但是 container 没有被拷过去,不知道是什么原因
    julyclyde
        15
    julyclyde  
       181 天前
    @Silently 改 docker 配置文件并不需要 systemctl daemon-reload
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1196 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 22:04 · PVG 06:04 · LAX 14:04 · JFK 17:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.