Docker 镜像的导出和还原操作

文章目录

镜像导出 (Export)

方法1:使用 docker save 命令

bash 复制代码
# 导出单个镜像到文件
docker save -o <输出文件名.tar> <镜像名:标签>

# 示例:导出ubuntu镜像
docker save -o ubuntu_image.tar ubuntu:latest

# 导出多个镜像到同一个文件
docker save -o multiple_images.tar image1:tag1 image2:tag2

方法2:使用 docker export 命令(针对容器)

bash 复制代码
# 先创建一个容器
docker run -itd --name temp_container ubuntu:latest

# 导出容器为镜像文件
docker export -o container_image.tar temp_container

# 删除临时容器
docker rm -f temp_container

镜像还原 (Import)

方法1:使用 docker load 命令

bash 复制代码
# 从tar文件加载镜像
docker load -i <镜像文件.tar>

# 示例
docker load -i ubuntu_image.tar

方法2:使用 docker import 命令

bash 复制代码
# 从tar文件导入为镜像
docker import <镜像文件.tar> <新镜像名:标签>

# 示例
docker import container_image.tar myubuntu:v1.0

主要区别对比

特性 docker save docker export
操作对象 镜像 容器
包含内容 完整镜像(层信息、元数据) 容器当前状态的文件系统
保留历史 保留 不保留
压缩 支持 不支持(需要手动压缩)

实际操作示例

完整流程示例:

bash 复制代码
# 1. 导出镜像
docker save -o my_images.tar nginx:latest mysql:5.7

# 2. 查看导出的文件
ls -lh my_images.tar

# 3. 复制到其他机器(或存储备份)
scp my_images.tar user@remote_server:/path/to/backup/

# 4. 在目标机器上加载镜像
docker load -i my_images.tar

# 5. 验证镜像是否加载成功
docker images

压缩优化:

bash 复制代码
# 导出并压缩(节省空间)
docker save nginx:latest | gzip > nginx_image.tar.gz

# 加载压缩的镜像
gunzip -c nginx_image.tar.gz | docker load

注意事项

  1. 版本兼容性:导出的镜像可能不兼容不同版本的Docker
  2. 文件大小:大型镜像导出的文件会比较大,建议压缩
  3. 元数据docker save 会保留完整的镜像元数据
  4. 私有镜像 :导出私有仓库镜像时需要先 docker pull 到本地

这些命令可以帮助你在不同环境之间迁移Docker镜像,或者进行备份和恢复操作。

相关推荐
一杯奶茶¥4 分钟前
Ubuntu系统镜像各个版本下载Ubuntu镜像合集资源Linux系统镜像乌班图Linux系统镜像
linux·运维·ubuntu·镜像·;inux镜像·ubuntu镜像
运维行者_9 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
2603_955279709 小时前
Cursor + GitOps:自动化运维新姿势
运维·自动化
Waay10 小时前
面试口述版:个人对 Prometheus 完整理解
运维·学习·云原生·面试·职场和发展·kubernetes·prometheus
三84410 小时前
文件查找/文件压缩/解压缩
linux·运维·服务器
小猪写代码10 小时前
Linux 管道(Pipeline)作业
linux·运维·服务器
桌面运维家10 小时前
如何用半缓存云桌面将服务器硬盘容量扩展至本地终端?
运维·服务器·缓存
激情的学姐10 小时前
【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
运维·nginx
ai_coder_ai11 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
spider_xcxc12 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算