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

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

时间:2024-05-16 09:53:29浏览次数:18  
标签:tar runoob echo 导入 FILE 镜像 Docker DIR

docker 命令:

导出镜像:

runoob@runoob:~$ docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
runoob@runoob:~$ ll my_ubuntu_v3.tar
-rw------- 1 runoob runoob 142102016 Jul 11 01:37 my_ubuntu_v3.ta

导入镜像:

docker load  -i flannel_flannel_v0.25.1.tar

批量导出

#!/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,runoob,echo,导入,FILE,镜像,Docker,DIR
From: https://www.cnblogs.com/ylxtiankong/p/18195367

相关文章

  • Docker-compose 常用命令
    docker-compose常用命令1、docker-compose up命令聚合每个容器的输出,命令退出时,所有容器都将停止2、docker-composeup-d在后台启动容器并使它们保持运行3、docker-composelogs-f查看该容器的启动的日志打印(日志从头打印)4、dockerlogs-fcontainer_id查看某一容器......
  • 使用qemu-system-x86_64和cloud-init修改qcow2镜像密码
    方法来自于:CoretutorialwithQEMU依次执行下面的命令sudoaptinstallqemu-system-x86mkdirtempcdtemp#以此镜像为例wgethttps://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.imgcat<<EOF>user-data#cloud-configpassword:123ch......
  • Nacos2.2.0适配瀚高数据库,打镜像部署
    一、Nacos2.2.0适配瀚高数据库Nacos2.2.0适配瀚高数据库部分参考地址:https://blog.csdn.net/weixin_39676699/article/details/130642890application.properties配置文件中数据库部分配置如下:spring.sql.init.platform=highgodb.num=1db.url.0=jdbc:highgo://192.168.1.1:58......
  • python sftp文件上传和Dockerfile部署步骤
    ##1、脚本app.py#-*-coding:utf8-*-importosimportparamikofromdatetimeimportdatetime,timedeltafromflaskimportFlask,requestapp=Flask(__name__)#从环境变量中获取配置信息host=os.getenv("SFTP_HOST")port=int(os.getenv("SFTP_PORT&q......
  • ubuntu 安装 docker 详细步骤(转)
    什么是Docker?Docker是一个免费的开源工具,设计用于在容器中构建、部署和运行应用程序。安装docker的主机是已知的docker引擎。Docker使用操作系统级虚拟化,并提供容器运行时环境。换句话说,Docker也可以被定义为PaaS(平台即服务)工具。因为docker是一个基于守护进程的服......
  • docker启动java容器报错unable to allocate file descriptor table - out of memory
    问题:启动java进程报错{"log":"libraryinitializationfailed-unabletoallocatefiledescriptortable-outofmemory","stream":"stderr","time":"2024-05-15T06:27:14.681052443Z"}原因:LimitNOFILE=infinity......
  • MAC下的homebrew安装及镜像调整
    一、安装未记录 二、镜像调整cd"$(brew--repo)"gitremoteset-urloriginhttps://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git#onlydothisbelowcd"$(brew--repo)/Library/Taps/homebrew/homebrew-core"gitremoteset-urloriginhttps://mi......
  • gradle 阿里镜像源
    文件路径:C:\Users\laremehpe\.gradle\init.gradleallprojects{repositories{defREPOSITORY_URL='https://maven.aliyun.com/repository/gradle-plugin'all{ArtifactRepositoryrepo->if(repoinstanceofMavenA......
  • Docker 编译安装Nginx正向代理
    先记录一波正向代理#makebaseimage.FROMdebian:bookworm-20240423-slimASbaseLABELmaintainer="RocSun<[email protected]>"RUNrm-rf/etc/apt/sources.list.d/*\&&echo"">/etc/apt/sources.list\&&ech......
  • openGauss 数据导入和查询的并发
    数据导入和查询的并发事务T1:STARTTRANSACTION;COPYtestFROM'...';COMMIT;事务T2:STARTTRANSACTION;SELECT*FROMtest;COMMIT;场景1:开启事务T1,不提交的同时开启事务T2,事务T1开始执行COPY,事务T2开始执行SELECT,事务T1和事务T2都执行成功。事务T2中查询看不到事务T1......