首页 > 其他分享 >Docker镜像批量导出和导入脚本

Docker镜像批量导出和导入脚本

时间:2024-03-28 16:46:28浏览次数:15  
标签:TAR 导出 echo 导入 FILE 镜像 Docker DIR

批量导出

#!/bin/bash  
  
# 设置导出镜像的目录  
EXPORT_DIR="/root/images"  
  
# 确保导出目录存在  
mkdir -p "$EXPORT_DIR"  
  
# 获取所有的镜像并导出  
IMAGES=$(docker images --format '{{.Repository}}:{{.Tag}}')  
  
# 遍历所有的镜像  
for IMAGE in $IMAGES; do  
    # 分割镜像仓库名和标签  
    IFS=":" read -r REPOSITORY TAG <<< "$IMAGE"  
      
    # 将仓库名中的斜杠替换为下划线  
    SAFE_REPOSITORY=${REPOSITORY//\//_}  
      
    # 构造导出文件的名称  
    EXPORT_FILE="${SAFE_REPOSITORY}_${TAG}.tar"  
    EXPORT_PATH="$EXPORT_DIR/$EXPORT_FILE"  
      
    # 检查镜像是否存在,如果存在则导出  
    if docker image inspect "${REPOSITORY}:${TAG}" >/dev/null 2>&1; then  
        docker save -o "$EXPORT_PATH" "${REPOSITORY}:${TAG}"  
        echo "Exported ${REPOSITORY}:${TAG} to $EXPORT_PATH"  
    else  
        echo "Error: ${REPOSITORY}:${TAG} does not exist"  
    fi  
done

echo "Export process completed."

批量导入

#!/bin/bash  
  
# 设置包含要导入镜像的 .tar 文件的目录  
IMPORT_DIR="/root/images"  
  
# 检查目录是否存在  
if [ ! -d "$IMPORT_DIR" ]; then  
    echo "Error: Directory $IMPORT_DIR does not exist."  
    exit 1  
fi  
  
# 遍历目录下的所有 .tar 文件并导入  
for TAR_FILE in "$IMPORT_DIR"/*.tar; do  
    if [ -f "$TAR_FILE" ]; then  
        echo "Importing $TAR_FILE..."  
        docker load -i "$TAR_FILE"  
        if [ $? -eq 0 ]; then  
            echo "Successfully imported $TAR_FILE"  
        else  
            echo "Failed to import $TAR_FILE"  
        fi  
    fi  
done  
  
echo "Import process completed."

标签:TAR,导出,echo,导入,FILE,镜像,Docker,DIR
From: https://www.cnblogs.com/wanghongwei-dev/p/18102043

相关文章

  • Docker Gitlab使用方法
    下载dockerpullgitlab/gitlab-ce运行dockerrun\--publish443:443--publish80:80--publish22:22\--namegitlab\-v/data/gitlab/config:/etc/gitlab\-v/data/gitlab/logs:/var/log/gitlab\-v/data/gitlab/data:/var/opt/gitlab\gitla......
  • etcd安装(docker)
    一、拉去官方镜像dockerpullquay.io/coreos/etcd:v3.5.0二、创建etcd容器dockerrun-d\-p2379:2379\-p2380:2380\--nameetcd\quay.io/coreos/etcd:v3.5.0\/usr/local/bin/etcd\-advertise-client-urlshttp://0.0.0.0:2379\-listen-client-......
  • Docker使用
    目录Docker安装Docker常用命令找镜像启动镜像 修改容器内容提交改变推送到远程仓库物理传输推送远程仓库挂载数据docker日志docker复制Docker安装移除以前的docker相关包:sudoyumremovedocker*安装yum工具类:yuminstall-yyum-utils添加docker安装源地......
  • Docker expose指令和-p 指令指定的端口区别
    expose指令用法该 EXPOSE 指令通知Docker容器在运行时侦听指定的网络端口,可以指定端口是侦听TCP还是UDP,如果未指定协议,则默认为TCP。EXPOSE80/tcpEXPOSE80/udpEXPOSE 指令实际上不会发布端口。它充当构建映像的人员和运行容器的人员之间的一种文档,用于发布要......
  • 如何导入LUT
    剪影专业版剪映专业版中如何导入和使用lut,分享一组lut给大家学习使用PS油管翻译:cameraraw(lightroom)如何使用cube格式的lutLr(要先完成Ps那步,并关闭重新打开Lr)cube预设怎么导入lr?......
  • docker-运行tomcat服务
    环境说明linux系统版本:lsb_release-a  docker版本:docker-v  不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。 .1.tomcat镜像版本选择。进入docker官网搜索8-jdk8  自己选择的版本如下  dockerpulltomcat:8-jdk8 ......
  • Docker基本使用
    Docker基本使用......
  • Docker Compose
    DockerComposeDockerCompose简介使用Docker的时候,定义Dockerfile文件,然后使用dockerbuild、dockerrun等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,这样效率很低,也不方便管理。使用Do......
  • Docker网络
    Docker网络Docker网络Linux网络查看本地网络信息[root@sail~]#ipaddr1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:00inet127.0.0.1/8scopehostlo......
  • Dockerfile
    DockerfileDockerfile简介Dockerfile是用来构建Docker镜像的文件,可以理解为命令参数脚本。Dockerfile是面向开发的,想要打包项目,就要编写Dockerfile文件。命令以上面的centos官方镜像的Dockerfile为例。FROMscratchADDcentos-7-docker.tar.xz/LABELorg.lab......