Docker实现镜像批量导出与导入的完整指南

 更新时间:2025年12月22日 08:26:07   作者:weixin_46244623  
这篇文章主要为大家详细介绍了如何通过Docker实现镜像批量导出与导入,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

1. 批量保存镜像到.tar文件

#!/bin/bash

# 保存目录
SAVE_DIR=/root/docker_images_backup
mkdir -p $SAVE_DIR

# 获取本地所有镜像列表 (Repository:Tag + IMAGE ID)
docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | while read img id; do

    # 如果 TAG 是 <none>,使用 IMAGE ID 代替
    if [[ $img == *"<none>"* ]]; then
        img=$id
    fi

    # 生成文件名,将 / 和 : 替换为 _
    filename=$(echo $img | sed 's/[\/:]/_/g').tar

    echo "Saving $img -> $SAVE_DIR/$filename"

    # 执行 docker save 导出镜像
    docker save -o $SAVE_DIR/$filename $img

done

功能说明:

  • 自动处理 <none> 标签的镜像。
  • 每个镜像导出为独立 tar 文件,命名格式 REPOSITORY_TAG.tar
  • 方便迁移和备份。

2. 批量加载镜像

#!/bin/bash

# 镜像 tar 文件目录
LOAD_DIR=/root/docker_images_backup

# 遍历目录下所有 tar 文件
for tarfile in $LOAD_DIR/*.tar; do
    echo "Loading $tarfile ..."
    docker load -i $tarfile
done

功能说明:

  • 自动加载目录下所有 .tar 文件到本地 Docker。
  • 可以用于迁移到新服务器或重建环境。

3. 使用示例

保存镜像:

bash save_all_images.sh

在新服务器加载镜像:

bash load_all_images.sh

4.方法补充

下文详细介绍了如何在Docker中批量导出和导入镜像,包括停止和删除容器、查找镜像、创建镜像目录、导出镜像到tar文件以及导入导出的脚本示例。

image_tar为存储镜像目录

删除所有容器

1.首先需要停止所有运行中的容器

docker stopdocker ps -a -q

docker ps -a -q 意思是列出所有容器(包括未运行的),只显示容器编号,其中

  • -a : 显示所有的容器,包括未运行的。
  • -q : 静默模式,只显示容器编号。

删除所有容器,将上面命令中的 stop 改为 rm 即可:

docker rm docker ps -a -q

删除所有镜像

docker rmi docker images -q

docker images -q 意思是列出本地镜像,只显示镜像 ID;docker rmi 意思是删除本地一个或多个镜像。

按条件删除镜像

删除无标签镜像(即 TAG 为 none 的镜像 dangling image)

docker rmi docker images -q | awk '/^<none>/ { print $3 }'

也可以使用如下命令删除

docker rmi $(docker images -q -f dangling=true)

删除包含某关键字的镜像

docker rmi --force docker images | grep test-api | awk '{print $3}' //其中test-api为关键字

导出镜像

#!/bin/bash

### 批量docker镜像的_脚本
# 获取到 "image:tag" 格式的镜像名
IMG_NAME=`docker images | grep -v TAG | awk '{print $1":"$2}'`
# echo $IMG_NAME | awk '{gsub(/ /,"\n",$0)} {print $0}'

# 如果原本镜像名中存在 "/" 是需要去掉的

# 定义镜像存放目录
DIR="./image_tar"
if [ ! -d "$DIR" ]; then
  echo -e "\033[34m${DIR}\033[0m 不存在"
  mkdir -p "$DIR"
  echo -e "\033[34m${DIR}\033[0m 已创建"
else
  echo -e "\033[34m${DIR}\033[0m 已存在"
fi
echo ""
for IMAGE in $IMG_NAME
do
  echo -e "正在保存 \033[33m${IMAGE}\033[0m"
  SAVE_NAME=`echo $IMAGE | awk -F: '{print $1"_"$2}' | sed 's/\//_/g'`
  docker save $IMAGE -o ${DIR}/${SAVE_NAME}.tar
  echo -e "已保存到 \033[34m${DIR}/\033[31m${SAVE_NAME}.tar\033[0m"
  echo ""
done

导入镜像

#!/bin/bash

# 批量导出docker镜像_在此处填写镜像文件的保存目录
IMAGE_DIR="./image_tar"

for IMAGE in `ls $IMAGE_DIR`
do
  echo -e "正在导入镜像 \033[33m$IMAGE\033[0m"
  docker load -i ${IMAGE_DIR}/${IMAGE}
  echo -e "已成功导入镜像 \033[33m$IMAGE\033[0m"
  echo ""
done

到此这篇关于Docker实现镜像批量导出与导入的完整指南的文章就介绍到这了,更多相关Docker镜像导入导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker修改容器配置文件的3种方法总结

    docker修改容器配置文件的3种方法总结

    有时候可能需要修改运行在docker容器中的nginx的配置文件,或者其他一些已经运行和启动很久的容器中的配置文件,下面这篇文章主要给大家介绍了关于docker修改容器配置文件的3种方法,需要的朋友可以参考下
    2022-04-04
  • ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

    ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

    本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker在Linux服务器上安装Elasticsearch、Kibana和IK分词器,并验证安装,感兴趣的朋友一起看看吧
    2025-02-02
  • Docker 删除镜像的实现

    Docker 删除镜像的实现

    本文主要介绍了Docker 删除镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Docker的boot2docker.iso镜像使用

    Docker的boot2docker.iso镜像使用

    这篇文章主要介绍了Docker的boot2docker.iso镜像使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Docker拉取镜像失败解决(connect: connection refused)

    Docker拉取镜像失败解决(connect: connection refused)

    最近遇到Docker拉取centos镜像时报错,本文主要介绍了Docker拉取镜像失败解决(connect: connection refused),具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Docker ps命令的具体使用

    Docker ps命令的具体使用

    docker ps 命令可以用来列出 Docker容器 相关信息,本文就来介绍一下Docker ps命令的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 在Ubuntu 16.04安装与使用Docker的教程详解

    在Ubuntu 16.04安装与使用Docker的教程详解

    Docker是一个应用程序,它使得在容器中运行应用程序进程变得简单和容易,这类应用程序就像虚拟机,只有更便携,更加资源友好,更依赖于主机操作系统。这篇文章主要介绍了在Ubuntu 16.04安装与使用Docker的教程
    2017-01-01
  • Docker方式启动tomcat访问首页出现404错误

    Docker方式启动tomcat访问首页出现404错误

    这篇文章主要介绍了Docker方式启动tomcat访问首页出现404错误。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 如何监控docker容器运行状态 shell 脚本

    如何监控docker容器运行状态 shell 脚本

    这篇文章主要介绍了如何监控docker容器运行状态 shell 脚本的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker系列compose ymal文件解析学习

    Docker系列compose ymal文件解析学习

    这篇文章主要介绍了Docker系列之compose ymal文件解析学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10

最新评论