一、前言
提供一种在Synology DSM7 主机间迁移Docker套件的思路。
二、测试环境
源主机:DS3622xs+(DSM 7.1.1-42962 Update 4)
目标主机:DVA1622(DSM 7.1.1-42962 Update 6)
tips:两台主机需开启ssh和rsync功能(可在控制面板中操作)
三、操作步骤
tips:操作前请务必做好数据备份,以免数据丢失
A. 先在源主机进行操作
- 在套件中心停用Docker套件。
- 登陆ssh,执行
wget https://gitee.com/kangzeru/dsm_-transferpackage/releases/download/v0.3-beta/transferpackage.sh
下载脚本。 - 执行
chmod +x transferpackage.sh
获得执行权限。 - 执行
sudo ./transferpackage.sh transfer Docker 1 [email protected]
进行迁移操作。
参数说明:
tips:迁移过程中会多次要求输入密码,请根据提示操作
迁移时会有如下类似的提示:
正在检测套件是否含有外部链接...
有外部链接:/var/packages/Docker/var/docker -> /volume2/@docker
套件Docker存在以上外部链接,请根据需要手动迁移这些文件(夹)并修改相应链接.
是否继续迁移套件Docker?[y/n]
请记住/volume2/@docker
这个路径(volume后面的数字可能会有不同),输入y
继续,@docker
文件夹的操作会在后面进行。
- 执行
sudo rsync -avWP --delete --syno-pseudo-root /volume2/@docker/ [email protected]:/volume1/@docker
同步@docker
文件夹。
说明: 前面的/volume2/@docker
根据上一步的提示修改,后面的/volume1/@docker
根据迁移目标主机的存储空间修改(示例:迁移到存储空间2就改为/volume2/@docker
)。
tips:根据已创建的容器数量、大小,该步骤执行过程可能会需要大量时间,请耐心等待
B. 再在目标主机进行操作
- 登陆ssh,执行
ln -snf /volume2/@docker /var/packages/Docker/var/docker
更新链接,/volume2/@docker
根据上面第4步修改。
tips:如果源主机和目标主机的套件所在存储空间编号相同可以略过这一步 - 在控制面板创建共享文件夹
docker
,如果已经有了就略过这一步。
C. 然后回到源主机进行操作
- 执行
sudo rsync -avWP --delete --syno-pseudo-root /volume2/docker/ [email protected]:/volume1/docker
同步docker
共享文件夹。
说明: 前面的/volume2/docker
和后面的/volume1/docker
根据源主机和目标主机docker
共享文件夹所在的存储空间修改。
D. 最后在目标主机进行操作
- 打开套件中心,在“已安装”里应该已经可以看到Docker套件,先不要启动(点启动一般也会提示启动失败)。
- 执行
sudo vi /var/packages/Docker/INFO
,将版本号改小。
- 在套件中心更新Docker套件,如果没有更新选项,可以尝试执行
sudo rm /var/packages/Docker/startFailed
- 如果操作一切正常,现在可以正常启动Docker套件了,容器等设置和源主机保持一样。
tips:启动容器可能会报错,根据错误提示更新相关设置即可(一般主要是涉及到存储空间变化的问题)