Docker系统迁移步骤(备份和恢复方法)

粗略的转变趋势

    1. 获取容器镜像备份(源)

 

    1. 获取数据卷备份(源)

 

    1. 恢复容器镜像备份(目标)

 

    恢复数据卷备份(目标)
image

为什么要进行容器镜像备份?

在本来的情况下,不应该有需要进行容器镜像备份的机制。备份是不应该被需要的。应该使用docker-compose文件或Dockerfile来实现一切,并且只要有文件,就应该能够始终构建(重新分配给他人)相同的环境。

然而,有时候可能需要进行无法自动化的设置。(例如Redmine的Backlogs插件等)

或者,如果不了解Docker的他人可能会未经许可访问容器并使用yum进行额外安装。因此,定期对容器进行镜像备份或在迁移至另一台机器时,需要获取最近的容器镜像。

为什么要进行容器卷的备份?

容器映像不包含卷,因此需要单独备份卷。

详细的转移步骤 de

请用中文翻译以下的题目,只需一种选项:

以下是使用docker-compose构建的Redmine迁移步骤的概述。请参考以下链接:
https://github.com/sameersbn/docker-redmine/tree/2.6-stable

假设将 docker-compose.yml 配置在以下目录中以进行构建:
/root/docker/redmine2.6/docker-compose.yml

切换初始操作

备份docker-compose.yml文件

# 创建一个名为 /root/bkup.yyyymmdd 的目录。
# 进入 /root/bkup.yyyymmdd 目录。
# 将 /root/docker/redmine2.6/docker-compose.yml 复制到当前目录,并保留原文件的权限和属性。

2. 备份容器映像。

docker镜像
→ 确认sameersbn_mod_yyyymmdd/redmine:2.6.10-2不存在
→ 确认sameersbn_mod_yyyymmdd/postgresql:9.4-18不存在

docker commit redmine26_redmine_1 sameersbn_mod_yyyymmdd/redmine:2.6.10-2 -> 将 redmine26_redmine_1 提交为 sameersbn_mod_yyyymmdd/redmine:2.6.10-2 的 Docker 镜像。

docker commit redmine26_postgresql_1 sameersbn_mod_yyyymmdd/postgresql:9.4-18 -> 将 redmine26_postgresql_1 提交为 sameersbn_mod_yyyymmdd/postgresql:9.4-18 的 Docker 镜像。

将redmine_yyyymmdd/redmine:2.6.10-2保存为redmine_bk_yyyymmdd.tar文件。
将redmine_yyyymmdd/postgresql:9.4-18保存为redmine_postgresql_bk_yyyymmdd.tar文件。

3.备份音量

使用docker运行最新版本的debian,从redmine26_postgresql_1容器中获取卷,并将当前目录绑定到/backup目录。然后,将/var/lib/postgresql目录打包成/backup/postgresql-data.tar文件。

使用docker运行最新版本的debian,从redmine26_redmine_1容器中获取卷,并将当前目录绑定到/backup目录。然后,将/home/redmine/data目录打包成/backup/redmine-data.tar文件。

4. 将传输转移到目标位置。

将docker-compose.yml和所有.tar文件通过scp命令发送到root@xxx.xxx.xxx.xxx:/root/docker/redmine

过渡阶段的操作

1. 恢复容器镜像

# cd /root/docker/redmine
# docker images
→ 确认sameersbn_mod_yyyymmdd/redmine:2.6.10-2不存在
→ 确认sameersbn_mod_yyyymmdd/postgresql:9.4-18不存在

用中文原生的方式重新表达以下内容,只需要一个选项:
#docker负载 -i redmine_bk_yyyymmdd.tar
#docker负载 -i redmine_postgresql_bk_yyyymmdd.tar

加载redmine_bk_yyyymmdd.tar的docker映像。
加载redmine_postgresql_bk_yyyymmdd.tar的docker映像。

# docker images
→ 确认存在 sameersbn_mod_yyyymmdd/redmine:2.6.10-2
→ 确认存在 sameersbn_mod_yyyymmdd/postgresql:9.4-18

2. 修改 docker-compose

编辑docker-compose.yml文件
将「sameersbn/redmine:2.6.10-2」改为「sameersbn_mod_yyyymmdd/redmine:2.6.10-2」
将「sameersbn/postgresql:9.4-18」改为「sameersbn_mod_yyyymmdd/postgresql:9.4-18」

3. 创建容器

当看到「redmine_redmine_1 exited with code 0」显示在最后时,按Ctrl-C停止docker-compose。

4. 音量恢复.

解压 postgresql-data.tar 文件。
# rm -rf /srv/docker/redmine/postgresql/9.4/main/*
重新放置解压的备份数据。
# cp -irp var/lib/postgresql/9.4/main/* /srv/docker/redmine/postgresql/9.4/main/
# ls -l /srv/docker/redmine/postgresql/
→ 确认权限
根据上述确认的权限进行设置。
# chown 102:106 -R /srv/docker/redmine/postgresql/9.4/main/
删除不再需要的目录。
rm -rf var/

这些操作需要重复执行,就像上面所写的一样。

# tar xvf redmine-data.tar
# rm -rf /srv/docker/redmine/redmine/*
# cp -irp home/redmine/data/* /srv/docker/redmine/redmine/
# ls -l /srv/docker/redmine/
→ 确认redmine目录的权限
# chown 1000:1000 -R /srv/docker/redmine/redmine/
# rm -rf home/

5. 重新启动容器

– 开始 Docker Compose
– 获取 Docker Compose 日志
– 确认是否没有输出错误消息

参考来源

http://qiita.com/lciel/items/e21a4ede3bac7fb3ec5a
https://docs.docker.com/engine/tutorials/dockervolumes/

以下是相关链接:
http://qiita.com/lciel/items/e21a4ede3bac7fb3ec5a
https://docs.docker.com/engine/tutorials/dockervolumes/

以上。 .)

bannerAds