05/11/2018

Docker Volume 存储卷数据迁移

在使用 Docker 的过程中,经常会使用 Docker Volume 数据存储卷来保持持久数据。典型的例子就是一个 MySQL 数据库。在服务器迁移过程中,Docker 镜像的迁移重构就是几行字的事,但是如何迁移存储卷中的数据呢?

准备工作:在原服务器上确保能够密钥连接 SSH,需要能够 ssh -p <PORT> <USERNAME>@<TARGET_HOST> 直接连接新服务器(不应提示输密码)。

接着在原服务器上运行如下即可:

docker run --rm -v [SOURCE_VOLUME_NAME]:/from alpine ash -c "cd /from; tar -cf - ." | \
    ssh -p [PORT] [USERNAME]@[TARGET_HOST] 'docker run --rm -i -v [TARGET_VOLUME_NAME]:/to alpine ash -c "cd /to; tar -xpvf -"'
名称 解释
TARGET_HOST 新服务器
SOURCE_VOLUME_NAME 原数据卷名称
TARGET_VOLUME_NAME 新数据卷名称

原理简单来说就是新建一个小的 Docker 镜像,把原数据卷加载上去,打包并通过 SSH 加密隧道传到新服务器上新建的 Docker 镜像的新数据卷内。之后新服务器上其他镜像也可使用此数据卷了。

本文链接:https://blog.whe.me/post/docker-volume-migration.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。