Docker容器的导入和导出
导出指定docker镜像
docker save -o xampp_7.tar ef5954c4d0d1
恢复上面导出的镜像
docker load -i xampp_7.tar
镜像改名
docker tag c1b6ba59135e amazoncorretto:8u352-alpine3.16-tini
修改镜像版本
docker commit <container_name_or_id> <new_image_name>:<tag>
1. 停止容器
docker-compose down
2. 导出镜像
导出 docker-compose 中定义的所有镜像:
docker-compose config | awk '/image:/{print $2}' | xargs -I {} docker save -o {}.tar {}
这将为 docker-compose.yml 中定义的所有镜像创建 .tar 文件。
3. 导出数据卷(如果有使用数据卷)
如果容器使用了数据卷并且你想备份这些数据卷,可以使用以下命令:
首先,列出容器使用的数据卷:
docker volume ls
然后,导出特定的数据卷(例如 my_volume):
docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar czf /backup/my_volume.tar.gz -C /volume .
4. 打包为 tar.gz
将导出的镜像和数据卷一起打包为 tar.gz 文件:
tar czf docker_backup.tar.gz *.tar *.tar.gz
拷贝文件到目标服务器
将 docker_backup.tar.gz 文件拷贝到目标服务器,可以使用 scp 或其他文件传输工具。
scp docker_backup.tar.gz user@target_server:/path/to/destination
在目标服务器上恢复
1. 解压 tar.gz 文件
在目标服务器上解压 docker_backup.tar.gz 文件:
tar xzf docker_backup.tar.gz
2. 加载镜像
加载导出的Docker镜像:
for image in *.tar; do docker load -i $image; done
docker load -i mongodb:24.8.9.1.tar &&\
docker load -i mysql:24.8.2.tar &&\
docker load -i rabbitmq:24.8.2.tar &&\
docker load -i redis:3.2.2.tar &&\
docker load -i szdriver:24.8.9.7.tar &&\
docker load -i javaapp:24.8.9.2.tar
3. 还原数据卷(如果有备份数据卷)
还原数据卷:
docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar xzf /backup/my_volume.tar.gz -C /volume
4. 启动容器
确保 docker-compose.yml 文件已复制到目标服务器,然后启动容器:
docker-compose up -d
No Comments