当前位置: 首页 > news >正文

docker离线镜像文件选择导入脚本

可以读取 /data/k8s-package 目录下的离线镜像文件,让用户选择导入:

#!/bin/bash# 脚本:离线镜像加载工具
# 功能:读取 /data/k8s-package 目录下的 .tar 镜像文件,交互式选择加载IMAGE_DIR="/data/k8s-package"# 检查目录是否存在
if [ ! -d "$IMAGE_DIR" ]; thenecho "错误: 目录 $IMAGE_DIR 不存在!"exit 1
fi# 查找所有的 .tar 镜像文件
image_files=($(find "$IMAGE_DIR" -name "*.tar" -type f | sort))# 检查是否找到镜像文件
if [ ${#image_files[@]} -eq 0 ]; thenecho "在 $IMAGE_DIR 目录下没有找到 .tar 镜像文件!"exit 1
fiecho "=============================================="
echo "       离线镜像加载工具"
echo "=============================================="
echo "找到 ${#image_files[@]} 个镜像文件:"
echo ""# 显示镜像文件列表
for i in "${!image_files[@]}"; dofilename=$(basename "${image_files[$i]}")size=$(du -h "${image_files[$i]}" | cut -f1)echo "  $((i+1)). $filename ($size)"
doneecho ""
echo "  q. 退出"
echo "  a. 加载所有镜像"
echo "=============================================="# 主循环
while true; doecho ""read -p "请选择要加载的镜像编号 (1-${#image_files[@]}) 或输入选项: " choicecase $choice in[Qq]* )echo "退出脚本."break;;[Aa] )echo "开始加载所有镜像..."for file in "${image_files[@]}"; dofilename=$(basename "$file")echo "正在加载: $filename"if docker load -i "$file"; thenecho "✓ 成功加载: $filename"elseecho "✗ 加载失败: $filename"fiecho "----------------------------------------------"doneecho "所有镜像加载完成!"break;;* )# 检查输入是否为数字且在有效范围内if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -le "${#image_files[@]}" ]; thenindex=$((choice-1))selected_file="${image_files[$index]}"filename=$(basename "$selected_file")echo "您选择了: $filename"echo "文件路径: $selected_file"echo "文件大小: $(du -h "$selected_file" | cut -f1)"# 确认加载read -p "确认加载这个镜像? (y/n): " confirmif [[ $confirm =~ ^[Yy]$ ]]; thenecho "正在加载: $filename"if docker load -i "$selected_file"; thenecho "✓ 成功加载: $filename"elseecho "✗ 加载失败: $filename"fielseecho "取消加载: $filename"fielseecho "无效选择! 请输入 1-${#image_files[@]} 的数字,或输入 q 退出,a 加载所有镜像"fi;;esac
doneecho ""
echo "=============================================="
echo "当前系统中的 Docker 镜像:"
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedSince}}"
echo "=============================================="

保存脚本:

保存脚本到文件

vi /data/k8s-package/load_offline_images.sh

给脚本执行权限

chmod +x /data/k8s-package/load_offline_images.sh

运行脚本:

cd /data/k8s-package
./load_offline_images.sh

脚本功能:
✅ 自动扫描 /data/k8s-package 目录下的所有 .tar 文件

✅ 显示文件列表 带序号和文件大小

✅ 交互式选择 可以按编号选择单个镜像加载

✅ 批量加载 输入 a 可以一次性加载所有镜像

✅ 持续运行 加载完一个镜像后可以继续选择其他镜像

✅ 确认机制 加载前会要求确认

✅ 结果反馈 显示加载成功或失败

✅ 退出选项 输入 q 退出脚本

✅ 最后显示 加载完成后显示当前系统中的所有 Docker 镜像

示例运行效果:

==============================================离线镜像加载工具
==============================================
找到 5 个镜像文件:1. nginx_20251011144621.tar (215MB)2. redis_20251011144730.tar (118MB)3. mysql_20251011144815.tar (444MB)q. 退出a. 加载所有镜像
==============================================请选择要加载的镜像编号 (1-3) 或输入选项: 1

在这里插入图片描述

http://www.dtcms.com/a/541527.html

相关文章:

  • Lua-迭代器
  • 社交网站 设计单仁营销网站的建设
  • RT-Thread FAL:为何NOR Flash必须注册为MTD设备?——深入解析RTOS设备模型
  • 如何查看网站蜘蛛数码公司网站建设的意义
  • 在婚恋网站做销售好吗网站推广排名哪家公司好
  • C#实现与欧姆龙PLC通信
  • 沧州瑞智网站建设一键优化下载安装
  • 网站源码带数据南充网站设计学校
  • 东莞高端品牌网站建设湛江网站建设托管
  • yolov5代码
  • wordpress首页文字广告框架在线seo
  • Rust:复合类型
  • Vue 3 + Element Plus 动态表格高度自适应方案详解
  • python flask简单使用
  • 课外辅导东莞网站建设技术支持saas系统是什么样的系统
  • 【论文精读】DeepSeek-OCR:探索视觉 - 文本压缩的新范式
  • 成都市网站设中国能源建设集团网站群
  • k8s 容器部署
  • Android的事件分发机制
  • 南京传销是以网站开发张槎网站建设
  • 写作网站好吗做游戏视频去哪个网站好
  • 斗兽棋象狮虎豹狼小游戏抖音快手微信小程序看广告流量主开源
  • MySQL的开始,MySQL的安装
  • 构建有记忆的 AI Agent:SQLite 存储 + 向量检索完整方案示例
  • 常州网站关键词优化咨询网站改版对网站优化影响最大的问题有哪些
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题邯郸seo排名
  • 知识图谱的知识工程建模:如何把名医的“诊断艺术”转化为辅助诊断系统
  • 图表设计网站临清网站推广
  • ubuntu22.04 ros2 fast_lio2 复现
  • 寻找长沙网站建设数据库网站开发