docker離線鏡像文件選擇導(dǎo)入腳本方式
更新時(shí)間:2025年10月31日 08:53:24 作者:???傀儡師
本文檔提供了一個(gè)腳本,用于自動(dòng)掃描、顯示和導(dǎo)入`/data/k8s-package`目錄下的Docker離線鏡像文件,用戶可以選擇單個(gè)或批量導(dǎo)入鏡像,并在每次加載后進(jìn)行確認(rèn),腳本運(yùn)行后,會(huì)顯示加載結(jié)果,并最終列出當(dāng)前系統(tǒng)中的所有Docker鏡像
docker離線鏡像文件選擇導(dǎo)入腳本
可以讀取 /data/k8s-package 目錄下的離線鏡像文件,讓用戶選擇導(dǎo)入:
#!/bin/bash
# 腳本:離線鏡像加載工具
# 功能:讀取 /data/k8s-package 目錄下的 .tar 鏡像文件,交互式選擇加載
IMAGE_DIR="/data/k8s-package"
# 檢查目錄是否存在
if [ ! -d "$IMAGE_DIR" ]; then
echo "錯(cuò)誤: 目錄 $IMAGE_DIR 不存在!"
exit 1
fi
# 查找所有的 .tar 鏡像文件
image_files=($(find "$IMAGE_DIR" -name "*.tar" -type f | sort))
# 檢查是否找到鏡像文件
if [ ${#image_files[@]} -eq 0 ]; then
echo "在 $IMAGE_DIR 目錄下沒(méi)有找到 .tar 鏡像文件!"
exit 1
fi
echo "=============================================="
echo " 離線鏡像加載工具"
echo "=============================================="
echo "找到 ${#image_files[@]} 個(gè)鏡像文件:"
echo ""
# 顯示鏡像文件列表
for i in "${!image_files[@]}"; do
filename=$(basename "${image_files[$i]}")
size=$(du -h "${image_files[$i]}" | cut -f1)
echo " $((i+1)). $filename ($size)"
done
echo ""
echo " q. 退出"
echo " a. 加載所有鏡像"
echo "=============================================="
# 主循環(huán)
while true; do
echo ""
read -p "請(qǐng)選擇要加載的鏡像編號(hào) (1-${#image_files[@]}) 或輸入選項(xiàng): " choice
case $choice in
[Qq]* )
echo "退出腳本."
break
;;
[Aa] )
echo "開(kāi)始加載所有鏡像..."
for file in "${image_files[@]}"; do
filename=$(basename "$file")
echo "正在加載: $filename"
if docker load -i "$file"; then
echo "? 成功加載: $filename"
else
echo "? 加載失敗: $filename"
fi
echo "----------------------------------------------"
done
echo "所有鏡像加載完成!"
break
;;
* )
# 檢查輸入是否為數(shù)字且在有效范圍內(nèi)
if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -le "${#image_files[@]}" ]; then
index=$((choice-1))
selected_file="${image_files[$index]}"
filename=$(basename "$selected_file")
echo "您選擇了: $filename"
echo "文件路徑: $selected_file"
echo "文件大小: $(du -h "$selected_file" | cut -f1)"
# 確認(rèn)加載
read -p "確認(rèn)加載這個(gè)鏡像? (y/n): " confirm
if [[ $confirm =~ ^[Yy]$ ]]; then
echo "正在加載: $filename"
if docker load -i "$selected_file"; then
echo "? 成功加載: $filename"
else
echo "? 加載失敗: $filename"
fi
else
echo "取消加載: $filename"
fi
else
echo "無(wú)效選擇! 請(qǐng)輸入 1-${#image_files[@]} 的數(shù)字,或輸入 q 退出,a 加載所有鏡像"
fi
;;
esac
done
echo ""
echo "=============================================="
echo "當(dāng)前系統(tǒng)中的 Docker 鏡像:"
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedSince}}"
echo "=============================================="
保存腳本:
保存腳本到文件
vi /data/k8s-package/load_offline_images.sh
給腳本執(zhí)行權(quán)限
chmod +x /data/k8s-package/load_offline_images.sh
運(yùn)行腳本:
cd /data/k8s-package ./load_offline_images.sh
腳本功能:
- ? 自動(dòng)掃描 /data/k8s-package 目錄下的所有 .tar 文件
- ? 顯示文件列表 帶序號(hào)和文件大小
- ? 交互式選擇 可以按編號(hào)選擇單個(gè)鏡像加載
- ? 批量加載 輸入 a 可以一次性加載所有鏡像
- ? 持續(xù)運(yùn)行 加載完一個(gè)鏡像后可以繼續(xù)選擇其他鏡像
- ? 確認(rèn)機(jī)制 加載前會(huì)要求確認(rèn)
- ? 結(jié)果反饋 顯示加載成功或失敗
- ? 退出選項(xiàng) 輸入 q 退出腳本
- ? 最后顯示 加載完成后顯示當(dāng)前系統(tǒng)中的所有 Docker 鏡像
示例運(yùn)行效果:
==============================================
離線鏡像加載工具
==============================================
找到 5 個(gè)鏡像文件:
1. nginx_20251011144621.tar (215MB)
2. redis_20251011144730.tar (118MB)
3. mysql_20251011144815.tar (444MB)
q. 退出
a. 加載所有鏡像
==============================================
請(qǐng)選擇要加載的鏡像編號(hào) (1-3) 或輸入選項(xiàng): 1

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Windows下運(yùn)用Docker部署Node.js開(kāi)發(fā)環(huán)境
這篇文章主要介紹了詳解Windows下運(yùn)用Docker部署Node.js開(kāi)發(fā)環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
Docker安裝MySQL8.0的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker安裝MySQL8.0的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Docker安裝Nginx問(wèn)題及錯(cuò)誤分析
這篇文章主要介紹了Docker安裝Nginx的問(wèn)題及錯(cuò)誤分析正確的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理詳解
本文主要給大家介紹了關(guān)于Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理的相關(guān)資料,文中介紹的很詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-02-02

