✏
如果你喜欢使用docker搭建一些好玩的项目,那这一篇docker备份还原加迁移的文章你必须得肝了,因为数据对我们很重要,docker创建一个容器很简单,但是你的数据,你知道他们在哪儿吗?下面就来介绍怎么找到自己的数据位置,备份他,还原他,迁移他。
一、这次以ZFile为例,顺便演示一下怎么在docker里面部署一个ZFile文件管理系统。 {#%E4%B8%80%E3%80%81%E8%BF%99%E6%AC%A1%E4%BB%A5zfile%E4%B8%BA%E4%BE%8B%EF%BC%8C%E9%A1%BA%E4%BE%BF%E6%BC%94%E7%A4%BA%E4%B8%80%E4%B8%8B%E6%80%8E%E4%B9%88%E5%9C%A8docker%E9%87%8C%E9%9D%A2%E9%83%A8%E7%BD%B2%E4%B8%80%E4%B8%AAzfile%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F%E3%80%82}
疑问:ZFile是什么?
答:最方便快捷的在线目录展示程序,支持将本地文件、FTP、SFTP、S3、OneDrive 等存储在网站上展示并浏览。
ZFile官网:👉点击直达
1、首先查看当前zfile容器运行状态。 {#1%E3%80%81%E9%A6%96%E5%85%88%E6%9F%A5%E7%9C%8B%E5%BD%93%E5%89%8Dzfile%E5%AE%B9%E5%99%A8%E8%BF%90%E8%A1%8C%E7%8A%B6%E6%80%81%E3%80%82}
docker ps -a
2、我当时部署zfile时没有用docker-compose部署,用的docker,但是docker后期迁移升级不是非常方便,因为你要把之前用docker命令安装容器的代码原份不动的运行一遍才能成功,比如下面这个就是我之前用来安装zfile的docker命令,咱们咋一看代码不好记忆,而且这句代码运行完就没有记录了,如果你没有记笔记的习惯,那你下次使用的时候就很难还原成下面这样了,所以这次借助此教程,也把我的zfile更新成docker-compose的模式运行,这里就有一个问题就是,怎么把docker代码改成docker-compose代码,巧在zfile官网已经帮大家写好了docker和docker-compose的代码了,我们可以直接去复制,我最开始部署zfile也是直接去官网复制下面的这个,但是当时没注意下面还有docker-compose。可是有些docker项目github项目或者开源项目官网没有给出docker-compose的代码怎么办,这里给大家推荐一个网站,可以将docker代码转换成docker-compose代码,如下: {#2%E3%80%81%E6%88%91%E5%BD%93%E6%97%B6%E9%83%A8%E7%BD%B2zfile%E6%97%B6%E6%B2%A1%E6%9C%89%E7%94%A8docker-compose%E9%83%A8%E7%BD%B2%EF%BC%8C%E7%94%A8%E7%9A%84docker%EF%BC%8C%E4%BD%86%E6%98%AFdocker%E5%90%8E%E6%9C%9F%E8%BF%81%E7%A7%BB%E5%8D%87%E7%BA%A7%E4%B8%8D%E6%98%AF%E9%9D%9E%E5%B8%B8%E6%96%B9%E4%BE%BF%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BD%A0%E8%A6%81%E6%8A%8A%E4%B9%8B%E5%89%8D%E7%94%A8docker%E5%91%BD%E4%BB%A4%E5%AE%89%E8%A3%85%E5%AE%B9%E5%99%A8%E7%9A%84%E4%BB%A3%E7%A0%81%E5%8E%9F%E4%BB%BD%E4%B8%8D%E5%8A%A8%E7%9A%84%E8%BF%90%E8%A1%8C%E4%B8%80%E9%81%8D%E6%89%8D%E8%83%BD%E6%88%90%E5%8A%9F%EF%BC%8C%E6%AF%94%E5%A6%82%E4%B8%8B%E9%9D%A2%E8%BF%99%E4%B8%AA%E5%B0%B1%E6%98%AF%E6%88%91%E4%B9%8B%E5%89%8D%E7%94%A8%E6%9D%A5%E5%AE%89%E8%A3%85zfile%E7%9A%84docker%E5%91%BD%E4%BB%A4%EF%BC%8C%E5%92%B1%E4%BB%AC%E5%92%8B%E4%B8%80%E7%9C%8B%E4%BB%A3%E7%A0%81%E4%B8%8D%E5%A5%BD%E8%AE%B0%E5%BF%86%EF%BC%8C%E8%80%8C%E4%B8%94%E8%BF%99%E5%8F%A5%E4%BB%A3%E7%A0%81%E8%BF%90%E8%A1%8C%E5%AE%8C%E5%B0%B1%E6%B2%A1%E6%9C%89%E8%AE%B0%E5%BD%95%E4%BA%86%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%B2%A1%E6%9C%89%E8%AE%B0%E7%AC%94%E8%AE%B0%E7%9A%84%E4%B9%A0%E6%83%AF%EF%BC%8C%E9%82%A3%E4%BD%A0%E4%B8%8B%E6%AC%A1%E4%BD%BF%E7%94%A8%E7%9A%84%E6%97%B6%E5%80%99%E5%B0%B1%E5%BE%88%E9%9A%BE%E8%BF%98%E5%8E%9F%E6%88%90%E4%B8%8B%E9%9D%A2%E8%BF%99%E6%A0%B7%E4%BA%86%EF%BC%8C%E6%89%80%E4%BB%A5%E8%BF%99%E6%AC%A1%E5%80%9F%E5%8A%A9%E6%AD%A4%E6%95%99%E7%A8%8B%EF%BC%8C%E4%B9%9F%E6%8A%8A%E6%88%91%E7%9A%84zfile%E6%9B%B4%E6%96%B0%E6%88%90docker-compose%E7%9A%84%E6%A8%A1%E5%BC%8F%E8%BF%90%E8%A1%8C%EF%BC%8C%E8%BF%99%E9%87%8C%E5%B0%B1%E6%9C%89%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98%E5%B0%B1%E6%98%AF%EF%BC%8C%E6%80%8E%E4%B9%88%E6%8A%8Adocker%E4%BB%A3%E7%A0%81%E6%94%B9%E6%88%90docker-compose%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%B7%A7%E5%9C%A8zfile%E5%AE%98%E7%BD%91%E5%B7%B2%E7%BB%8F%E5%B8%AE%E5%A4%A7%E5%AE%B6%E5%86%99%E5%A5%BD%E4%BA%86docker%E5%92%8Cdocker-compose%E7%9A%84%E4%BB%A3%E7%A0%81%E4%BA%86%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%8E%BB%E5%A4%8D%E5%88%B6%EF%BC%8C%E6%88%91%E6%9C%80%E5%BC%80%E5%A7%8B%E9%83%A8%E7%BD%B2zfile%E4%B9%9F%E6%98%AF%E7%9B%B4%E6%8E%A5%E5%8E%BB%E5%AE%98%E7%BD%91%E5%A4%8D%E5%88%B6%E4%B8%8B%E9%9D%A2%E7%9A%84%E8%BF%99%E4%B8%AA%EF%BC%8C%E4%BD%86%E6%98%AF%E5%BD%93%E6%97%B6%E6%B2%A1%E6%B3%A8%E6%84%8F%E4%B8%8B%E9%9D%A2%E8%BF%98%E6%9C%89docker-compose%E3%80%82%E5%8F%AF%E6%98%AF%E6%9C%89%E4%BA%9Bdocker%E9%A1%B9%E7%9B%AEgithub%E9%A1%B9%E7%9B%AE%E6%88%96%E8%80%85%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E5%AE%98%E7%BD%91%E6%B2%A1%E6%9C%89%E7%BB%99%E5%87%BAdocker-compose%E7%9A%84%E4%BB%A3%E7%A0%81%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%8C%E8%BF%99%E9%87%8C%E7%BB%99%E5%A4%A7%E5%AE%B6%E6%8E%A8%E8%8D%90%E4%B8%80%E4%B8%AA%E7%BD%91%E7%AB%99%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%B0%86docker%E4%BB%A3%E7%A0%81%E8%BD%AC%E6%8D%A2%E6%88%90docker-compose%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%A6%82%E4%B8%8B%EF%BC%9A}
docker代码转docker-compose代码网站:👉点击直达
给大家展示一下zfile官方给出的docker代码和docker-compose格式的代码模板。
docker代码
👇
docker run -d --name=zfile --restart=always \
-p 8080:8080 \
-v /root/zfile/db:/root/.zfile-v4/db \
-v /root/zfile/logs:/root/.zfile-v4/logs \
-v /root/zfile/file:/data/file \
-v /root/application.properties:/root/application.properties \
zhaojun1998/zfile
docker-compose代码
👇
version: '3.3'
services:
zfile:
container_name: zfile
restart: always
ports:
- '8080:8080'
volumes:
- '/root/zfile/db:/root/.zfile-v4/db'
- '/root/zfile/logs:/root/.zfile-v4/logs'
- '/root/zfile/file:/data/file'
- '/root/application.properties:/root/application.properties'
image: zhaojun1998/zfile
3、如果你之前使用的是docker代码搭建的,但你又没有存档docker代码怎么办,我们可以使用如下命令协助查找解决(哎,还是有办法滴,不要急,你急也没用😋) {#3%E3%80%81%E5%A6%82%E6%9E%9C%E4%BD%A0%E4%B9%8B%E5%89%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AFdocker%E4%BB%A3%E7%A0%81%E6%90%AD%E5%BB%BA%E7%9A%84%EF%BC%8C%E4%BD%86%E4%BD%A0%E5%8F%88%E6%B2%A1%E6%9C%89%E5%AD%98%E6%A1%A3docker%E4%BB%A3%E7%A0%81%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%A6%82%E4%B8%8B%E5%91%BD%E4%BB%A4%E5%8D%8F%E5%8A%A9%E6%9F%A5%E6%89%BE%E8%A7%A3%E5%86%B3%EF%BC%88%E5%93%8E%EF%BC%8C%E8%BF%98%E6%98%AF%E6%9C%89%E5%8A%9E%E6%B3%95%E6%BB%B4%EF%BC%8C%E4%B8%8D%E8%A6%81%E6%80%A5%EF%BC%8C%E4%BD%A0%E6%80%A5%E4%B9%9F%E6%B2%A1%E7%94%A8%F0%9F%98%8B%EF%BC%89}
3.1、首先通过步骤1的命令docker ps -a 可以得到,使用的是tcp协议,内部端口8080,外部端口8081;使用的镜像名称是:zhaojun1998/zfile {#3.1%E3%80%81%E9%A6%96%E5%85%88%E9%80%9A%E8%BF%87%E6%AD%A5%E9%AA%A41%E7%9A%84%E5%91%BD%E4%BB%A4docker-ps--a-%E5%8F%AF%E4%BB%A5%E5%BE%97%E5%88%B0%EF%BC%8C%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AFtcp%E5%8D%8F%E8%AE%AE%EF%BC%8C%E5%86%85%E9%83%A8%E7%AB%AF%E5%8F%A38080%EF%BC%8C%E5%A4%96%E9%83%A8%E7%AB%AF%E5%8F%A38081%EF%BC%9B%E4%BD%BF%E7%94%A8%E7%9A%84%E9%95%9C%E5%83%8F%E5%90%8D%E7%A7%B0%E6%98%AF%EF%BC%9Azhaojun1998%2Fzfile}
3.2、然后使用下面的命令在确认卷的映射关系和映射路径 {#3.2%E3%80%81%E7%84%B6%E5%90%8E%E4%BD%BF%E7%94%A8%E4%B8%8B%E9%9D%A2%E7%9A%84%E5%91%BD%E4%BB%A4%E5%9C%A8%E7%A1%AE%E8%AE%A4%E5%8D%B7%E7%9A%84%E6%98%A0%E5%B0%84%E5%85%B3%E7%B3%BB%E5%92%8C%E6%98%A0%E5%B0%84%E8%B7%AF%E5%BE%84}
docker inspect zfile
由上图就可以得到如下的关系,有了这些信息,我们就可以得到之前的docker代码了。
-v /root/zfile/db:/root/.zfile-v4/db
-v /root/zfile/logs:/root/.zfile-v4/logs
-v /root/zfile/file:/data/file
-v /root/application.properties:/root/application.properties \
4、因为我们的zfile容器还在运行所以第一步先暂停容器 {#4%E3%80%81%E5%9B%A0%E4%B8%BA%E6%88%91%E4%BB%AC%E7%9A%84zfile%E5%AE%B9%E5%99%A8%E8%BF%98%E5%9C%A8%E8%BF%90%E8%A1%8C%E6%89%80%E4%BB%A5%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%85%88%E6%9A%82%E5%81%9C%E5%AE%B9%E5%99%A8}
docker stop zfile
5、zfile容器暂停后,我们先备份这个容器的数据,然后删除这台服务器上的zfile容器(删除之前如果你没有100%把握你能独立恢复,请先给你的服务器打一个快照,不然数据丢失,别怪我教程没写哦😂),最后在还原我们这台服务器的zfile容器 {#5%E3%80%81zfile%E5%AE%B9%E5%99%A8%E6%9A%82%E5%81%9C%E5%90%8E%EF%BC%8C%E6%88%91%E4%BB%AC%E5%85%88%E5%A4%87%E4%BB%BD%E8%BF%99%E4%B8%AA%E5%AE%B9%E5%99%A8%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8C%E7%84%B6%E5%90%8E%E5%88%A0%E9%99%A4%E8%BF%99%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84zfile%E5%AE%B9%E5%99%A8%EF%BC%88%E5%88%A0%E9%99%A4%E4%B9%8B%E5%89%8D%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%B2%A1%E6%9C%89100%25%E6%8A%8A%E6%8F%A1%E4%BD%A0%E8%83%BD%E7%8B%AC%E7%AB%8B%E6%81%A2%E5%A4%8D%EF%BC%8C%E8%AF%B7%E5%85%88%E7%BB%99%E4%BD%A0%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%89%93%E4%B8%80%E4%B8%AA%E5%BF%AB%E7%85%A7%EF%BC%8C%E4%B8%8D%E7%84%B6%E6%95%B0%E6%8D%AE%E4%B8%A2%E5%A4%B1%EF%BC%8C%E5%88%AB%E6%80%AA%E6%88%91%E6%95%99%E7%A8%8B%E6%B2%A1%E5%86%99%E5%93%A6%F0%9F%98%82%EF%BC%89%EF%BC%8C%E6%9C%80%E5%90%8E%E5%9C%A8%E8%BF%98%E5%8E%9F%E6%88%91%E4%BB%AC%E8%BF%99%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84zfile%E5%AE%B9%E5%99%A8}
PS:通过步骤3.2我们可以看到数据库db;日志logs;zfile的文件zfile;以及配置文件application.properties都在/root文件下,那我们可以通过在/root目录下将zfile以及application.properties压缩打包实现备份。
5.1、确认自己的目录位置,查看文件 {#5.1%E3%80%81%E7%A1%AE%E8%AE%A4%E8%87%AA%E5%B7%B1%E7%9A%84%E7%9B%AE%E5%BD%95%E4%BD%8D%E7%BD%AE%EF%BC%8C%E6%9F%A5%E7%9C%8B%E6%96%87%E4%BB%B6}
5.2、使用tar命令进行打包压缩备份 {#5.2%E3%80%81%E4%BD%BF%E7%94%A8tar%E5%91%BD%E4%BB%A4%E8%BF%9B%E8%A1%8C%E6%89%93%E5%8C%85%E5%8E%8B%E7%BC%A9%E5%A4%87%E4%BB%BD}
tar -czvf zfile-backup.tar.gz application.properties zfile
ls -l
5.3、使用docker rm命令删除这台服务器的zfile容器 {#5.3%E3%80%81%E4%BD%BF%E7%94%A8docker-rm%E5%91%BD%E4%BB%A4%E5%88%A0%E9%99%A4%E8%BF%99%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84zfile%E5%AE%B9%E5%99%A8}
docker ps -a | grep 8f66 #证明容器存在并且已经停止
docker rm zfile #删除容器
docker ps -a | grep 8f66 #验证容器已被删除
5.4、开始尝试恢复zfile容器,并且可以正常登录,数据也没有丢失 {#5.4%E3%80%81%E5%BC%80%E5%A7%8B%E5%B0%9D%E8%AF%95%E6%81%A2%E5%A4%8Dzfile%E5%AE%B9%E5%99%A8%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%B8%B8%E7%99%BB%E5%BD%95%EF%BC%8C%E6%95%B0%E6%8D%AE%E4%B9%9F%E6%B2%A1%E6%9C%89%E4%B8%A2%E5%A4%B1}
5.4.1、先用docker命令还原(我的外部端口我改成8081了,请注意一下) {#5.4.1%E3%80%81%E5%85%88%E7%94%A8docker%E5%91%BD%E4%BB%A4%E8%BF%98%E5%8E%9F%EF%BC%88%E6%88%91%E7%9A%84%E5%A4%96%E9%83%A8%E7%AB%AF%E5%8F%A3%E6%88%91%E6%94%B9%E6%88%908081%E4%BA%86%EF%BC%8C%E8%AF%B7%E6%B3%A8%E6%84%8F%E4%B8%80%E4%B8%8B%EF%BC%89}
此时我们可以看到容器的ID已经改变了,之前是8f66现在是dc20
docker run -d --name=zfile --restart=always \
-p 8081:8080 \
-v /root/zfile/db:/root/.zfile-v4/db \
-v /root/zfile/logs:/root/.zfile-v4/logs \
-v /root/zfile/file:/data/file \
-v /root/application.properties:/root/application.properties \
zhaojun1998/zfile
验证:尝试访问一下
验证:尝试登陆后台,都没有问题,完成!
5.4.2、我们再次删掉刚刚恢复的zfile这个容器,然后使用docker-compose安装一下。 {#5.4.2%E3%80%81%E6%88%91%E4%BB%AC%E5%86%8D%E6%AC%A1%E5%88%A0%E6%8E%89%E5%88%9A%E5%88%9A%E6%81%A2%E5%A4%8D%E7%9A%84zfile%E8%BF%99%E4%B8%AA%E5%AE%B9%E5%99%A8%EF%BC%8C%E7%84%B6%E5%90%8E%E4%BD%BF%E7%94%A8docker-compose%E5%AE%89%E8%A3%85%E4%B8%80%E4%B8%8B%E3%80%82}
首先在/root/data/docker_data/目录下创建一个zfile文件,然后将刚刚备份的zfile-backup.tar.gz移动到这个目录下,然后解压。
docker stop zfile
docker rm zfile
mkdir -p /root/data/docker_data/zfile
cd /root/data/docker_data/zfile/
mv /root/zfile-backup.tar.gz /root/data/docker_data/zfile/
ls
tar -zxvf zfile-backup.tar.gz
5.4.3、然后在这个目录下创建一个docker-compose.yaml文件
将官网的docker-compose.yml代码贴进去保存
vi docker-compose.yaml
官网代码:
👇👇👇
version: '3.3'
services:
zfile:
container_name: zfile
restart: always
ports:
- '8080:8080'
volumes:
- '/root/zfile/db:/root/.zfile-v4/db'
- '/root/zfile/logs:/root/.zfile-v4/logs'
- '/root/zfile/file:/data/file'
- '/root/application.properties:/root/application.properties'
image: zhaojun1998/zfile
**注意了!注意了!注意了!**为什么我上面要创建zfile文件夹和迁移备份文件到zfile文件夹呢,并且还在zfile文件夹下创建docker-compose.yaml,是为了后续迁移备份还原做的准备,请继续玩下看。
修改官网代码如下(根据自己实际路径修改):
👇👇👇
version: '3.3'
services:
zfile:
container_name: zfile
restart: always
ports:
- '8080:8080'
volumes:
- '/root/data/docker_data/zfile/zfile/db:/root/.zfile-v4/db'
- '/root/data/docker_data/zfile/zfile/logs:/root/.zfile-v4/logs'
- '/root/data/docker_data/zfile/zfile/file:/data/file'
- '/root/data/docker_data/zfile/application.properties:/root/application.properties'
image: zhaojun1998/zfile
5.4.4、然后运行/root/data/docker_date/zfile下的docker-compose.yaml文件 {#5.4.4%E3%80%81%E7%84%B6%E5%90%8E%E8%BF%90%E8%A1%8C%2Froot%2Fdata%2Fdocker_date%2Fzfile%E4%B8%8B%E7%9A%84docker-compose.yaml%E6%96%87%E4%BB%B6}
PS : docker compose up -d
和docker-compose up -d
,两个命令执行的功能是一样的,都是使用 Docker Compose 启动容器,并且在后台运行。只是第一个命令使用了 docker
命令直接启动 compose,而第二个命令使用了 docker-compose
工具来启动 compose。
在 Docker 1.13 版本之前,docker-compose
命令是需要单独安装的。因此,使用 docker
命令启动 compose 更为常见。但是在 1.13 版本以后,docker-compose
命令被集成到了 docker
命令中,因此也可以直接使用 docker-compose
命令来启动 compose。
docker compose up -d
发现报错了,8080端口被占用,检查一下8080端口使用情况
lsof -i:8080
修改docker-compose.yaml的外部端口为:8081再次运行,就可以了。
vi docker-compose.yaml
docker compose up -d
然后运行docker ps -a查看以容器运行状态,发现容器ID再次改变,然后在验证打开web和管理后台都是成功的。
docker ps -a
6、迁移到其他服务器验证是否可以正常打开,检查数据是否都在。 {#6%E3%80%81%E8%BF%81%E7%A7%BB%E5%88%B0%E5%85%B6%E4%BB%96%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%AA%8C%E8%AF%81%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%AD%A3%E5%B8%B8%E6%89%93%E5%BC%80%EF%BC%8C%E6%A3%80%E6%9F%A5%E6%95%B0%E6%8D%AE%E6%98%AF%E5%90%A6%E9%83%BD%E5%9C%A8%E3%80%82}
6.1、使用SCP命令将本服务器刚刚备份压缩的zfile-backuo.tar.gz传输到另外一台服务器上。 {#6.1%E3%80%81%E4%BD%BF%E7%94%A8scp%E5%91%BD%E4%BB%A4%E5%B0%86%E6%9C%AC%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%9A%E5%88%9A%E5%A4%87%E4%BB%BD%E5%8E%8B%E7%BC%A9%E7%9A%84zfile-backuo.tar.gz%E4%BC%A0%E8%BE%93%E5%88%B0%E5%8F%A6%E5%A4%96%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E3%80%82}
首先先去另外一台Ubuntu的tmp文件夹下查看当前目录的文件,如下图:
cd /tmp
ls
6.2、到本服务器上,cd进入到存放zfile-backuo.tar.gz文件的目录 {#6.2%E3%80%81%E5%88%B0%E6%9C%AC%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%EF%BC%8Ccd%E8%BF%9B%E5%85%A5%E5%88%B0%E5%AD%98%E6%94%BEzfile-backuo.tar.gz%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%AE%E5%BD%95}
cd /root/data/docker_data/zfile
ls
6.3、使用如下命令将zfile-backuo.tar.gz文件拷贝到Ubuntu系统中 {#6.3%E3%80%81%E4%BD%BF%E7%94%A8%E5%A6%82%E4%B8%8B%E5%91%BD%E4%BB%A4%E5%B0%86zfile-backuo.tar.gz%E6%96%87%E4%BB%B6%E6%8B%B7%E8%B4%9D%E5%88%B0ubuntu%E7%B3%BB%E7%BB%9F%E4%B8%AD}
scp -P 22 -r zfile-backup.tar.gz young@10.x.x.9:/tmp
传输完成后去Ubuntu系统下在ls查看是否传输成功,可以看到已经好了。
ls
6.4、接下里全部都在Ubuntu系统内操作了,首先先去解压这个文件到Ubuntu相同的路径下,比如: {#6.4%E3%80%81%E6%8E%A5%E4%B8%8B%E9%87%8C%E5%85%A8%E9%83%A8%E9%83%BD%E5%9C%A8ubuntu%E7%B3%BB%E7%BB%9F%E5%86%85%E6%93%8D%E4%BD%9C%E4%BA%86%EF%BC%8C%E9%A6%96%E5%85%88%E5%85%88%E5%8E%BB%E8%A7%A3%E5%8E%8B%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E5%88%B0ubuntu%E7%9B%B8%E5%90%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E4%B8%8B%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A}
/root/data/docker_data/zfile
6.4.1、先创建这个目录和文件夹 {#6.4.1%E3%80%81%E5%85%88%E5%88%9B%E5%BB%BA%E8%BF%99%E4%B8%AA%E7%9B%AE%E5%BD%95%E5%92%8C%E6%96%87%E4%BB%B6%E5%A4%B9}
mkdir -p /root/data/docker_data/zfile
cd /root/data/docker_data/zfile
cp /tmp/zfile-backup.tar.gz /root/data/docker_data/zfile
ls
tar -zxvf zfile-backup.tar.gz
ls
cd zfile/
ls
mv db/ file/ logs/ /root/data/docker_data/zfile/ #把zfile文件都移动到/root/data/docker_data/zfile目录,为了下面写docker-compose.yaml好看一点
ls
cd ..
ls
6.4.2、因为这个zfile-backuo.tar.gz这个文件是之前没用docker-compose时备份的,没有吧docker-compose.yaml一起备份进去,所以还得来一步把docker-compose.yaml也拷贝过来,以后只需要备份Ubuntu系统下的/root/data/docker_data文件就好了。 {#6.4.2%E3%80%81%E5%9B%A0%E4%B8%BA%E8%BF%99%E4%B8%AAzfile-backuo.tar.gz%E8%BF%99%E4%B8%AA%E6%96%87%E4%BB%B6%E6%98%AF%E4%B9%8B%E5%89%8D%E6%B2%A1%E7%94%A8docker-compose%E6%97%B6%E5%A4%87%E4%BB%BD%E7%9A%84%EF%BC%8C%E6%B2%A1%E6%9C%89%E5%90%A7docker-compose.yaml%E4%B8%80%E8%B5%B7%E5%A4%87%E4%BB%BD%E8%BF%9B%E5%8E%BB%EF%BC%8C%E6%89%80%E4%BB%A5%E8%BF%98%E5%BE%97%E6%9D%A5%E4%B8%80%E6%AD%A5%E6%8A%8Adocker-compose.yaml%E4%B9%9F%E6%8B%B7%E8%B4%9D%E8%BF%87%E6%9D%A5%EF%BC%8C%E4%BB%A5%E5%90%8E%E5%8F%AA%E9%9C%80%E8%A6%81%E5%A4%87%E4%BB%BDubuntu%E7%B3%BB%E7%BB%9F%E4%B8%8B%E7%9A%84%2Froot%2Fdata%2Fdocker_data%E6%96%87%E4%BB%B6%E5%B0%B1%E5%A5%BD%E4%BA%86%E3%80%82}
scp -P 22 -r docker-compose.yaml young@10.x.x.9:/tmp
6.4.3、将Ubuntu系统的tmp目录下把docker-compose.yaml迁移到/root/data/docker_data/zfile文件下,并删除多余的文件/zfile,(备份文件zfile-backuo.tar.gz留着) {#6.4.3%E3%80%81%E5%B0%86ubuntu%E7%B3%BB%E7%BB%9F%E7%9A%84tmp%E7%9B%AE%E5%BD%95%E4%B8%8B%E6%8A%8Adocker-compose.yaml%E8%BF%81%E7%A7%BB%E5%88%B0%2Froot%2Fdata%2Fdocker_data%2Fzfile%E6%96%87%E4%BB%B6%E4%B8%8B%EF%BC%8C%E5%B9%B6%E5%88%A0%E9%99%A4%E5%A4%9A%E4%BD%99%E7%9A%84%E6%96%87%E4%BB%B6%2Fzfile%EF%BC%8C%EF%BC%88%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6zfile-backuo.tar.gz%E7%95%99%E7%9D%80%EF%BC%89}
mv /tmp/docker-compose.yaml /root/data/docker_data/zfile/
ls
rm -rf zfile
ls
6.4.4、然后修改docker-compose.yaml文件,修改db,logs,file的映射路径 {#6.4.4%E3%80%81%E7%84%B6%E5%90%8E%E4%BF%AE%E6%94%B9docker-compose.yaml%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BF%AE%E6%94%B9db%EF%BC%8Clogs%EF%BC%8Cfile%E7%9A%84%E6%98%A0%E5%B0%84%E8%B7%AF%E5%BE%84}
vi docker-compose.yaml
前
👇
后
👇
6.4.5、见证奇迹的一刻! {#6.4.5%E3%80%81%E8%A7%81%E8%AF%81%E5%A5%87%E8%BF%B9%E7%9A%84%E4%B8%80%E5%88%BB%EF%BC%81}
首先查看当前运行的容器,只有portainer,tomcat,halo
docker ps -a
然后在/root/data/docker_data/zfile目录运行docker-compose up -d
docker-compose up -d
可以看到Ubuntu系统在拉去zfile的镜像
看到:⠿ Container zfile Started表示成功了
然后运行docker ps -a检查一下运行状态,容器已经成功运行了
docker-compose up -d
然后我们来打开web和管理控制台验证一下,也成功了,而且之前配置的格式,数据都在!
7、拓展 {#7%E3%80%81%E6%8B%93%E5%B1%95}
问:如果我们有很多容器怎么一次性全部备份,还原,迁移?
答:合理存放你的数据,前期在搭建docker项目时就要把所有docker数据都存放在一个目录下管理,比如/root/data/docker_data/,然后配置一个自动备份脚本,定时备份,以防数据丢失,后面为大家介绍,怎么弄自动备份脚本。
到这里就结束喽,现在我们对docker容器的备份,还原,迁移还原都有所了解了,我想对你应该有重要意义吧!✌✌✌✌✌✌✌✌✌