Docker一键将运行中的容器打包成镜像并导出操作

 更新时间:2025年11月21日 09:57:22   作者:HeXDev  
在Docker中,将运行中的容器保存为镜像并导出是一个常见的操作,特别是在你需要迁移或备份容器配置和数据时,这篇文章主要介绍了Docker一键将运行中的容器打包成镜像并导出操作的相关资料,需要的朋友可以参考下

前言

在日常使用 Docker 过程中,我们常常会遇到这样一个场景:

启动了一个容器,在里面做了一些环境配置、安装了依赖、调试好了应用,现在想把它的当前状态保存下来,以便以后再次使用,或者迁移到其他服务器上。

这篇文章将手把手教你如何把一个运行中的容器保存成镜像,并导出到文件。

一、背景知识

在 Docker 中,几个容易混淆的命令:

  • docker commit
    将容器当前状态“快照”成一个新的镜像。
  • docker save
    将镜像导出成 tar 文件(保留镜像层信息和 metadata)。
  • docker export
    将容器的文件系统导出为 tar(不保留历史层和元数据)。
  • docker load
    docker save 导出的 tar 文件导入镜像。
  • docker import
    docker export 导出的 tar 文件创建新镜像(无历史层)。

简单理解:

保留镜像信息用 commit + save,只想导出文件系统就用 export。

二、操作流程

1. 启动并运行容器

例如,我们先启动一个临时容器:

docker run -it --name mycontainer ubuntu:20.04 /bin/bash

进入容器后,你可能会执行:

apt update && apt install -y vim curl

现在容器状态已经发生了变化。

2. 将容器保存为镜像

当你想保存当前容器状态时:

docker commit mycontainer myimage:latest

这里的含义是:

  • 将容器 mycontainer 生成一个新镜像 myimage:latest
  • 镜像会记录当时的文件系统、环境变量等。

可以验证一下:

docker images

输出类似:

REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
myimage            latest    a1b2c3d4e5f6   5 seconds ago    250MB

3. 导出镜像为 tar 文件

docker save -o myimage.tar myimage:latest

这样会生成一个 myimage.tar 文件,你可以发送给别人或存档。

4. 在另一台机器导入镜像

复制 myimage.tar 到另一台服务器后执行:

docker load -i myimage.tar

导入成功后:

docker images

就可以看到 myimage:latest 出现在新环境中了。

三、完整命令汇总

# 将容器保存成镜像
docker commit mycontainer myimage:latest  

# 将镜像导出成 tar 包
docker save -o myimage.tar myimage:latest  

# 传输到另一台机器
scp myimage.tar user@remote:/path  

# 另一台机器加载镜像
docker load -i myimage.tar

四、docker commitvsdocker export的区别

功能docker commit + docker savedocker export
保留历史层
保留镜像 metadata(如 CMD、ENV)
导出内容镜像(包括层和配置)容器文件系统快照
导入方式docker loaddocker import

如果你是为了迁移或复用镜像,请选择 commit + save
如果只是想要容器的纯文件系统数据,才用 export

五、总结

通过 docker commitdocker save,我们可以轻松地将运行中的容器状态保存下来并导出成镜像文件,方便在不同环境中部署。
这是在开发调试阶段、迁移环境或者快速备份时非常实用的技巧。

小建议:如果是长期维护的项目,建议将重要配置写到 Dockerfile 中,从源代码构建镜像,而不是依赖 commit 生成镜像。这样更易于版本管理和复现。

📌 参考命令速查表

docker commit <容器名/ID> <镜像名:标签>      # 保存容器为镜像
docker save -o <文件名.tar> <镜像名:标签>     # 导出镜像
docker load -i <文件名.tar>                  # 导入镜像
docker export <容器名/ID> > <文件名.tar>      # 导出容器文件系统
docker import <文件名.tar> <镜像名:标签>      # 从文件系统生成镜像

到此这篇关于Docker一键将运行中的容器打包成镜像并导出操作的文章就介绍到这了,更多相关Docker运行的容器打包成镜像导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何在Docker容器中打印和配置环境变量

    如何在Docker容器中打印和配置环境变量

    环境变量是操作系统级别的配置,在系统启动时设置,可以被系统中的所有进程访问,这篇文章主要介绍了如何在Docker容器中打印和配置环境变量的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • Docker安装Nginx问题及错误分析

    Docker安装Nginx问题及错误分析

    这篇文章主要介绍了Docker安装Nginx的问题及错误分析正确的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Docker安装iTop快速搭建IT服务管理平台

    Docker安装iTop快速搭建IT服务管理平台

    本文主要介绍了Docker安装iTop快速搭建IT服务管理平台,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Docker Registry搭建私有镜像仓库的实现方法

    Docker Registry搭建私有镜像仓库的实现方法

    这篇文章主要介绍了Docker Registry搭建私有镜像仓库的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Docker tomcat的设置内存大小配置方式

    Docker tomcat的设置内存大小配置方式

    这篇文章主要介绍了Docker tomcat的设置内存大小配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Jenkins Docker静态agent节点的构建过程

    Jenkins Docker静态agent节点的构建过程

    这篇文章主要介绍了Jenkins Docker静态agent节点的构建,静态节点就是通过java -jar这条命令去启动起来就可以了,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • Docker部署HertzBeat实时监控告警系统

    Docker部署HertzBeat实时监控告警系统

    HertzBeat是一款开源的实时监控告警系统,本文就来介绍一下Docker部署HertzBeat实时监控告警系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • 使用docker指令如何删除所有不再使用的镜像

    使用docker指令如何删除所有不再使用的镜像

    这篇文章主要介绍了使用docker指令如何删除所有不再使用的镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 关于docker清理Overlay2占用磁盘空间的问题(亲测有效)

    关于docker清理Overlay2占用磁盘空间的问题(亲测有效)

    使用Docker过程中,长时间运行服务容器,导致不能进行上传文件等操作,今天通过本文给大家详细介绍下docker清理Overlay2占用磁盘空间的相关知识,感兴趣的朋友一起看看吧
    2022-03-03
  • Docker系统空间占用过大的清理方法详解

    Docker系统空间占用过大的清理方法详解

    在日常使用 Docker 的过程中,我们经常会发现服务器磁盘空间莫名其妙地被占满,特别是 /var/lib/docker/overlay2 目录动辄几十个 G,下面我们就来看看如何清理吧
    2025-11-11

最新评论