使用命令方式对Docker进行备份,迁移,以WordPress为示例

NO.1
使用场景

本文的WordPress博客是Docker Compose搭建的

所以对其进行及时备份和迁移,尤其是整站备份,而不是数据库等备份

目前市面上的备份插件大多数需要收费且不太符合整站备份需求

所以本文尝试对WordPress的Docker备份和迁移

img

NO.2
容器作为镜像备份

首先查看Docker容器ID

docker ps -a

查看WordPress相关容器的ID(其中有wordpress和mariadb)

img

根据容器ID生成容器快照

这一步很重要,因为快照不仅仅是基础的镜像,而是包含了截止到目前为止容器内的配置和代码,库和一些文件等(不包括数据卷)

也就是我们要完全还原且正常运行,就需要备份容器快照,而不是基础镜像和最初的容器

使用下面命令生成容器快照

docker commit container-id image-name

实际演示

img

保存为压缩文件

按照下面命令

docker save image-name > image-name.tar

实际演示

可以看到生成了wordpressimageback.tar文件

img

第二个mariadb容器采用相同步骤备份tar文件(假定设置压缩镜像名为

mariadbimageback)

然后备份数据卷

本文db_data和wordpress文件夹为数据卷文件夹

img

这里直接备份dsx2016文件夹

tar -zcvf /home/dsx2016/docker/wordpress/databack.tar.gz /home/dsx2016/docker/wordpress/dsx2016

上述命令会把dsx2016文件夹压缩为databack.tar.gz文件放在wordpress文件夹下

以上完成了

  • wordpress容器快照的文件压缩备份

  • mariadb容器快照的文件压缩备份

  • 数据卷的文件压缩备份

NO.3
迁移还原Docker

在另一个服务器上,确保Docker版本和原服务器一致或者兼容

先解压数据卷

确保在指定文件夹下有db_data,wordpress和docker-compose.yml文件

img

然后上传容器快照压缩文件,用下面命令进行容器镜像还原

cat image-name.tar | docker load

还原后,修改docker-compose.yml的镜像

img

然后运行

docker-compose up -d

可以完整还原运行Docker和对应的数据(整站备份WordPress)

NO.4
Tips

注意,如果迁移后使用localhost或者127.0.0.1等访问WordPress

无法访问或者提示Ngixn页面等,这是WordPress本身的域名指定问题

使用frp或者本地电脑更改host映射或者nginx代理,使用迁移前的域名访问wordpress即可

如果会一些技术,可以直接修改wordpress的数据库,修改域名访问地址为localhost也行

END.