将docker容器打包为.tar包的实现方式

 更新时间:2025年09月27日 09:35:32   作者:Le0v1n  
文章介绍了Docker镜像打包与加载的四步流程:修改脚本中的三个关键变量(容器名、镜像名、保存路径)、执行打包命令生成.tar文件、验证镜像加载是否成功、确认加载后的镜像能否正常创建容器

1. 创建打包脚本

#!/bin/bash
# 设置 -e 使得脚本在遇到错误时停止执行
set -e

# ============================== 必要的参数 ==============================
exported_container_name="needed_export_container_name_or_id"  # 需要被导出的容器的名称或id
image_save_name="my_custom_image_name:v25.03.03"  # 镜像需要保存的名字和版本号
tar_save_path="./my_custom_image.tar"  # 镜像的tar保存路径
# ========================================================================

# 生成基于时间的随机文件夹名
temp_file="tempfile_"$(date +%Y%m%d_%H%M%S.tar)

# 在宿主机导出容器文件
echo "[INFO] Step 1/4: Export container..."
docker export "$exported_container_name" > "$temp_file"
echo "[INFO] Step 1/4: Export container completed! "
echo ""

# 将容器文件变为镜像
echo "[INFO] Step 2/4: Import image..."
docker import "$temp_file" "$image_save_name"
echo "[INFO] Step 2/4: Import image completed!"
echo ""

# 将镜像保存为tar包
echo "[INFO] Step 3/4: Save image..."
docker save -o "$tar_save_path" "$image_save_name"
echo "[INFO] Step 3/4: Save image completed!"
echo ""

# 删除多余的tar包
echo "[INFO] Step 4/4: Cleanup temporary files..."
if [ -f "$temp_file" ]; then
    rm "$temp_file"
    echo "[INFO] Step 4/4: Temporary files cleaned up!"
else
    echo "[WARNING] Temporary file does not exist, skipping deletion."
fi
echo ""

echo "[INFO] The image has been saved in $tar_save_path"

docker rmi "$image_save_name"

echo "[INFO] The image named $image_save_name has been deleted!"

这里需要注意三个变量需要修改:

  • exported_container_name:需要被导出的容器的名称或id
  • image_save_name:镜像需要保存的名字和版本号
  • tar_save_path:生成的镜像.tar文件保存路径

2. 开始执行

3. 验证.tar包是否可以正常加载为镜像

首先确定我们的要加载的镜像没有存在

docker images

之后我们开始加载镜像:

# 语法
docker load -i <刚才我们打包好的tar包>

4. 验证加载的镜像是否可以正常创建容器

docker run -it --name <容器的名称> <镜像命令:版本/镜像id>
# 示例
docker run -it --name <容器的名称>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker启动常用容器命令及配置详细说明

    Docker启动常用容器命令及配置详细说明

    文章介绍了Docker容器的运行、进入、查看和管理等相关命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-04-04
  • 使用Docker+Nginx部署vue项目详细图文教程

    使用Docker+Nginx部署vue项目详细图文教程

    这篇文章主要给大家介绍了关于使用Docker+Nginx部署vue项目的相关资料,文中通过图文介绍的非常详细,对大家学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 基于docker的 nacos安装部署过程

    基于docker的 nacos安装部署过程

    这篇文章主要介绍了基于docker的 nacos安装部署,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-08-08
  • 详解如何使用Docker部署Django+MySQL8开发环境

    详解如何使用Docker部署Django+MySQL8开发环境

    这篇文章主要介绍了详解如何使用Docker部署Django+MySQL8开发环境,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • docker安装logstash的步骤

    docker安装logstash的步骤

    这篇文章主要介绍了docker安装logstash,环境是基于centos7.6操作系统,安装logstash过程给大家讲解的非常详细,需要的朋友可以参考下
    2022-04-04
  • 详解Docker退出容器不关闭容器的方法

    详解Docker退出容器不关闭容器的方法

    进入docker容器后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢?现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • IDEA集成Docker实现打包的方法

    IDEA集成Docker实现打包的方法

    本文主要介绍了IDEA集成Docker实现打包的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • docker-swarm教程之安全保护加密数据的方法详解

    docker-swarm教程之安全保护加密数据的方法详解

    默认情况下,集群管理器使用的raft 算法的日志在磁盘上加密,这种静态加密可保护服务配置和数据免受访问加密Raft日志的攻击者的攻击,因此引入了Docker secret功能,来保证加密文件的安全,本文将给大家详细的介绍一下如何安全的保护加密数据
    2023-08-08
  • docker自定义网桥docker0及docker的开启,关闭,重启命令操作

    docker自定义网桥docker0及docker的开启,关闭,重启命令操作

    这篇文章主要介绍了docker自定义网桥docker0及docker的开启,关闭,重启命令操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker 如何分配宿主机网段 IP

    Docker 如何分配宿主机网段 IP

    本篇文章主要介绍了Docker 如何分配宿主机网段 IP,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论