docker导出镜像、容器打镜像

说明 Docker 中导出镜像、导出容器和由容器生成镜像的区别,给出常用命令示例和迁移备份注意事项。

袋鼠云
袋鼠云

Docker 中经常会遇到镜像迁移、离线部署或保存现场环境的需求。常见做法包括导出镜像、导出容器文件系统,以及把容器提交为新镜像。三种方式看起来相似,但保留的信息不同,适用场景也不同。

使用 save 和 load 导出镜像

如果目标是完整迁移一个已有镜像,通常使用 docker save。它会保存镜像层、标签和元数据,适合离线传输到另一台机器后再恢复。

docker save -o redis.tar redis:7
docker load -i redis.tar

这种方式适合镜像仓库不可用、内网部署、备份指定版本镜像等场景。恢复后可以通过 docker images 查看镜像是否存在。

使用 export 和 import 导出容器

docker export 面向容器,会导出容器当前文件系统内容,但不会完整保留镜像历史、启动命令、环境变量、端口等元数据。导入后得到的是一个新的镜像快照。

docker ps -a
docker export -o container.tar <container_id>
docker import container.tar my-image:from-container

这种方式更像保存容器文件系统现场,适合简单迁移文件内容,但不适合作为规范的生产镜像构建方式。

使用 commit 从容器生成镜像

如果在容器中手动安装了软件或调整了文件,可以使用 docker commit 把当前容器状态提交为新镜像。

docker commit <container_id> my-image:debug

不过,commit 生成的镜像缺少可读的构建过程,不利于长期维护。正式环境更推荐编写 Dockerfile,让依赖、配置和构建步骤可追溯、可复现。

三种方式如何选择

需要完整搬运镜像时,用 save 和 load。需要保存容器文件系统快照时,用 export 和 import。临时把容器改动打成镜像时,可以用 commit,但后续应整理为 Dockerfile。

还要注意数据卷不会被这些命令完整打包。数据库、上传文件、日志等如果挂载在 volume 或宿主机目录中,需要单独备份。对于生产迁移,镜像、配置、数据卷和启动参数都应一起纳入迁移清单。

开启Data+AI 之旅

填写表单,获取专属解决方案

400-002-1024

工作日 9:00-18:00

关注公众号

获取最新产品动态与技术干货

关注公众号

企业微信

扫码添加企业微信