美文网首页docker
docker volume迁移

docker volume迁移

作者: Firetheworld | 来源:发表于2020-08-11 16:43 被阅读0次

    应用容器化后,将数据路径持久化到宿主机中。当应用做迁移后,数据部分也需要进行迁移。

    迁移思路:使用 --volumes-from 命令,将容器中

    案例: 容器化的postgresql 迁移。

    postgres容器中将数据路径部分持久化到本地docker创建的volume中。

    ubuntu@ubuntu-Lenovo:~$ docker volume ls|grep postgis
    local               postgis
    ubuntu@ubuntu-Lenovo:~$ docker ps -a|grep postgis
    40f1046f40f9        docker.in.zteict.com/official/kartoza/postgis:9.4-2.1   "/bin/sh -c /start..."   9 months ago        Up 40 minutes               0.0.0.0:5433->5432/tcp  postgis
    ubuntu@ubuntu-Lenovo:~$ docker volume ls|grep postgis
    local               postgis
    ubuntu@ubuntu-Lenovo:~$ 
    

    1、使用busybox将数据部分进行打包。

    docker run --rm --volumes-from  postgis  \
    -v $(pwd):/backup \
    docker.in.zwxict.com/tools/busybox 
    tar zcf /backup/backup.tgz -C /var/lib/postgresql ./
    

    postgis: 需要备份的容器名, /var/lib/postgresql 容器中存放的数据路径,对命令的各行进行解释如下:

    --rm 表示该容器是一次性环境,生成后就自动删除,我们只需要运行一次备份文件而已
    -v $(pwd):/backup 将容器的/backup目录映射到主机当前目录
    docker.in.zwxict.com/tools/busybox 镜像名,这里也可以替换为其他镜像
    tar zcvf /backup/backup.tgz -C /var/lib/postgresql ./ 表示将容器中 /var/lib/postgresql 文件夹的内容打包,并存储在/backup文件夹下,文件名为backup.tgz,结合前面那行-v $(pwd):/backup 就可以实现将 volume 内容打包为宿主机当前目录下的backup.tar文件
    -C 参数,避免出现打包的文件包括了我们不需要的目录,比如我们想要打包的是 /var/lib/postgresql 目录下的全部文件,使用了 -C 参数并结合最后的 ./ 可以避免最终生成的 tgz文件解压后包括/var/lib/postgresql

    2 将数据压缩包通过scp迁移到指定的服务器上。然后通过busybox把数据压缩包解压到指定的docker创建的volume中。

    docker create 命令创造一个仅用于迁移的容器

    docker create -v postgis:/data --name for_migrate busybox true
    

    ps: 我们创建一个postgis的volume,映射路径为/data,我们将数据解压到此路径下
    解压数据到‘postgis’volume中。

    docker run --rm --volumes-from for_migrate -v $(pwd):/backup docker.in.zwxict.com/tools/busybox tar zxf /backup/backup.tgz  -C /data
    

    最后启动postgres:

    docker run -d     --name postgis     -p 5433:5432     -v postgis:/var/lib/postgresql  -e ALLOW_IP_RANGE=0.0.0.0     docker.in.zteict.com/official/kartoza/postgis:9.4-2.1
    

    相关文章

      网友评论

        本文标题:docker volume迁移

        本文链接:https://www.haomeiwen.com/subject/amdydktx.html