signed

QiShunwang

“诚信为本、客户至上”

如何将docker部署的wekan迁移另一台服务器

2021/4/26 18:49:46   来源:

目录

  • 前言
  • 解决过程
    • 自己尝试
    • 提issue
    • wekan作者补全docker迁移wekan的文档
  • 支持🤟

前言

对于这个问题,我首先是查阅wekan的Wiki,果然在Wiki上找到了Move Docker containers to other computer,但是写的不够详细,只是给出了docker官方文档的export和import文档的链接,只有下图OLD INFO后面的内容。

经过自己一番摸索,没能搞定,于是给wekan提了个issueHow to move wekan to other computer by docker? #3758😂,在wekan作者xet7的帮助下解决了这个问题。

同时xet7大佬也补全了Move Docker containers to other computer的文档,于是就有了OLD INFO上面的内容。
在这里插入图片描述

解决过程

自己尝试

一开始于是我按照docke import和export的官方文档和搜索的相关文章进行操作的,还是不行,操作步骤如下:

Here’s how I do it:

  1. Connect to server A
  2. docker export wekan-app > wekan-app.tar
  3. docker export wekan-db > wekan-db.tar
  4. Connect to server B
  5. docker import - wekanteam/wekan < wekan-app.tar
  6. docker import - mongo < wekan-db.tar
  7. git clone https://github.com/wekan/wekan
  8. vim docker-compose.yml
  9. Modify wekan image to wekanteam/wekan and wekandb image to mongo
  10. docker-compose up -d Error is as follows:
wekan-app ... error

ERROR: for wekan-app  Cannot create container for service wekan: No
command specified

ERROR: for wekan  Cannot create container for service wekan: No
command specified ERROR: Encountered errors while bringing up the
project. ```

提issue

实在解决不了,而且本身Move Docker containers to other computer写得不够详细,于是给wekan提了个issueHow to move wekan to other computer by docker? #3758。

wekan的作者xet7大佬回答非常迅速,我提问9分钟就给我答复了。
我按照他的说的进行了操作,还是不行,于此同时我通过5 ways to move Docker container to another host
也了解到:
export和import容器工具的一个缺点是,它不导出容器的端口和变量,也不导出包含容器的底层数据。
当尝试在另一台服务器中加载容器时,这可能会导致错误。在这种情况下,我们选择Docker镜像迁移来将容器从一台服务器迁移到另一台服务器。
也就是5 ways中的第二种方法。

镜像迁移主要用到docker的commit、save、load这几个命令,我按照尝试后依旧报同样的错误。

wekan作者补全docker迁移wekan的文档

我看了下5 ways to move Docker container to another host
的第四种方法,因涉及到数据卷,在不是很熟悉wekan的情况下,我没有尝试,。
正当我准备尝试的第五种方法(5. Move entire Docker containers)时,xet7大佬又回复了我😄。

他补全Move Docker containers to other computer的内容,该内容正是我要尝试的第五种方法 ,而且写得很详细。
于是我按照他写的步骤操作了一篇,果然成功了。
在这里插入图片描述

该方法是将所有容器迁移到另一台服务器,它是将整个docker目录/var/lib/docker拷贝另一台服务器,因此该方法需要注意:

  • 保留文件夹的权限和所有权。
  • 迁移前停止Docker服务。
  • 验证两台服务器中的Docker版本是否兼容。
  • 迁移前后验证容器列表和功能。
  • 环境变量和其他配置文件的路径。

由于该方法是将旧服务器的docker所有容器替换到新服务器,因此新服务器的容器会被替换掉,因此操作前,需要备份新服务器上原有的/var/lib/docker目录。
所以如果新服务器上的docker有用于生产环境的容器,最好不要使用此方法。

如果你会更方便的方法,欢迎留言!

支持🤟


  • 🎸 [关注❤️我吧],我会持续更新的。
  • 🎸 [点个👍赞吧],码字不易麻烦了。