在使用 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 镜像的新数据卷内。之后新服务器上其他镜像也可使用此数据卷了。
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。