Docker容器迁移

推荐方法一、

docker镜像, 容器等信息通常是默认存储在/var/lib/docker目录下的,而/var对应的磁盘空间一般都不是很大,需要我们将/var/lib/docker迁移到空间足够的挂载盘中去。

  • 停掉正在运行的docker服务:
     systemctl stop docker
  • 将docker存储目录拷贝到要迁移的最够大目录中去,eg:/home/docker/lib/
     rsync -r -avz /var/lib/docker /home/docker/lib/
  • 修改以前的docker目录为docker-old
    mv /var/lib/docker /var/lib/docker-old
  • 软链接迁移目录到原目录
    ln -s /home/docker/lib/docker /var/lib/
  • 重启docker
    systemctl start docker
    或
    systemctl restart docker
  • 验证镜像和容器可以正常运行,则删除。在未确定镜像和容器正常运行前勿删。
    rm -rf /var/lib/docker-old

方法二、

docker镜像, 容器等信息通常是默认存储在/var/lib/docker目录下的,而/var对应的磁盘空间一般都不是很大,需要我们将/var/lib/docker迁移到空间足够的挂载盘中去。

  • 停掉正在运行的docker服务:
    systemctl stop docker
  • 将docker存储目录拷贝到要迁移的最够大目录中去,eg:/home/docker/lib/
     rsync -r -avz /var/lib/docker /home/docker/lib/
  • 修改配置(如果不存在配置目录则创建,存在则忽略
    mkdir -p /etc/systemd/system/docker.service.d/
  • 编辑devicemapper.conf
    vi /etc/systemd/system/docker.service.d/devicemapper.conf
    [Service]
    
    ExecStart=
    
    ExecStart=/usr/bin/dockerd--graph=/home/docker/lib/docker
  • 修改daemon.json
    vi /etc/docker/daemon.json
    #添加
    {"storage-driver": "devicemapper" }
    此处不修改可能会出现Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
  • 重新加载systemd管理器配置
    systemctl daemon-reload
  • 重启docker服务
    systemctl start docker
    或
    systemctl restart docker
  • 看目录是否已被更改
    docker info 
    显示
    Docker Root Dir: /home/docker/lib/docker 
    则表明修改成功
  • 验证镜像和容器可以正常运行,则删除。在未确定镜像和容器正常运行前勿删。
    rm -rf /var/lib/docker

 

posted @ 2024-08-22 10:11  曾经已是追忆  阅读(74)  评论(0编辑  收藏  举报