Docker Compose 来打包和备份 Docker 镜像

使用 Docker Compose 来打包和备份 Docker 镜像的过程一般分为两个步骤:

  1. 将镜像保存为 tar 文件,方便备份。
  2. 将 Docker Compose 配置打包,以便日后恢复容器的配置。

1. 将 Docker 镜像保存为 tar 文件

如果你想备份特定的 Docker 镜像,你需要将镜像保存为 .tar 文件,然后你可以把这个文件转移到其他地方存储或者用于恢复。

假设你已经有了 Docker 镜像,并且想要备份它。你可以使用 docker save 命令将镜像导出为一个 tar 文件。

步骤:

  • 列出当前 Docker 镜像docker images 找到你想备份的镜像名称和标签,例如:wordpress:latest
[root@iZj6c4oh2p3wuhcrvycoumZ ruoyi-vue]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
wordpress             latest    4c9b15c9a8ae   2 weeks ago     697MB
easysoft/zentao       latest    835197bb4b20   2 months ago    513MB
mysql                 8.0.37    8279f68ee77d   4 months ago    567MB
portainer/portainer   latest    5f11582196a4   23 months ago   287MB
redis                 5.0       99ee9af2b6b1   24 months ago   110MB
openjdk               8-jre     0c14a0e20aa3   2 years ago     274MB
nginx                 1.21.0    4f380adfc10f   3 years ago     133MB
  • 使用 docker save 命令将镜像保存为 tar 文件docker save -o /backup/wordpress.tar wordpress:latest 这将会把镜像 wordpress:latest 导出为一个 tar 文件,存储在 /backup/ 目录下。
mkdir /backup
docker save -o /backup/wordpress.tar wordpress:latest
docker save -o /backup/zentao.tar easysoft/zentao:latestdocker save -o /backup/mysql.tar mysql:8.0.37docker save -o /backup/portainer.tar portainer/portainer:latestdocker save -o /backup/redis.tar redis:5.0docker save -o /backup/openjdk.tar openjdk:8-jredocker save -o /backup/nginx.tar nginx:1.21.0

恢复镜像:

如果你想恢复这个镜像,你可以使用 docker load 命令:

docker load -i /backup/wordpress.tar
docker load -i /backup/zentao.tar
docker load -i /backup/mysql.tar
docker load -i /backup/portainer.tar
docker load -i /backup/redis.tar
docker load -i /backup/openjdk.tar
docker load -i /backup/nginx.tar

这会将 tar 文件中的镜像加载回 Docker 中。

2. 备份 Docker Compose 配置

除了备份镜像外,你还可以备份 Docker Compose 配置文件 (docker-compose.yml),这样可以方便你日后恢复整个应用的容器配置。

步骤:

  • 找到你的 docker-compose.yml 文件,它包含了所有的服务定义和容器配置。我的文件目录都放在/docker目录下

恢复 Docker Compose 配置:

  • 恢复镜像和容器配置时,首先将备份的 docker-compose.yml.env 文件复制回原来的位置。
  • 然后你可以通过以下命令重新启动服务: docker-compose up -d

这将会根据备份的 docker-compose.yml 文件重新创建容器。

3. 完整备份:镜像 + 配置文件

你可以将 Docker 镜像的 tar 文件和 Docker Compose 配置文件一起打包到一个压缩文件中,方便备份和恢复。例如:

tar -czvf /backup.tar.gz /backup /docker 

这样你就有了一个完整的备份文件,包含了镜像和配置。

4. 使用 Docker Compose 打包整个应用

Docker Compose 本身没有直接的命令来备份整个应用(包括镜像和配置),但你可以通过以下步骤来实现类似的效果:

  1. 使用 docker-compose build 构建镜像: 你可以通过 Docker Compose 重新构建你的镜像,然后再使用 docker save 将构建的镜像保存为 tar 文件。 docker-compose build docker save -o /backup/myapp_backup.tar myapp:latest
  2. 结合 Docker Compose 进行备份和恢复: 通过结合使用 docker-compose.yml 和镜像备份文件,你可以在新的环境中使用相同的配置和镜像来恢复整个应用。

总结

  1. 备份镜像:使用 docker save 命令将镜像保存为 tar 文件。
  2. 备份配置文件:备份 docker-compose.yml 以及相关的磁盘映射数据。
  3. 恢复过程:将备份的镜像和配置文件恢复到新环境,并使用 docker-compose up 重建容器。

这样,你就能轻松备份和恢复你的 Docker Compose 应用和 Docker 镜像了。

发表评论