Docker實現(xiàn)鏡像批量導(dǎo)出與導(dǎo)入的完整指南
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"
# 執(zhí)行 docker save 導(dǎo)出鏡像
docker save -o $SAVE_DIR/$filename $img
done
功能說明:
- 自動處理
<none>標簽的鏡像。 - 每個鏡像導(dǎo)出為獨立 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。 - 可以用于遷移到新服務(wù)器或重建環(huán)境。
3. 使用示例
保存鏡像:
bash save_all_images.sh
在新服務(wù)器加載鏡像:
bash load_all_images.sh
4.方法補充
下文詳細介紹了如何在Docker中批量導(dǎo)出和導(dǎo)入鏡像,包括停止和刪除容器、查找鏡像、創(chuàng)建鏡像目錄、導(dǎo)出鏡像到tar文件以及導(dǎo)入導(dǎo)出的腳本示例。
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)
刪除包含某關(guān)鍵字的鏡像
docker rmi --force docker images | grep test-api | awk '{print $3}' //其中test-api為關(guān)鍵字
導(dǎo)出鏡像
#!/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 已創(chuàng)建"
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
導(dǎo)入鏡像
#!/bin/bash
# 批量導(dǎo)出docker鏡像_在此處填寫鏡像文件的保存目錄
IMAGE_DIR="./image_tar"
for IMAGE in `ls $IMAGE_DIR`
do
echo -e "正在導(dǎo)入鏡像 \033[33m$IMAGE\033[0m"
docker load -i ${IMAGE_DIR}/${IMAGE}
echo -e "已成功導(dǎo)入鏡像 \033[33m$IMAGE\033[0m"
echo ""
done
到此這篇關(guān)于Docker實現(xiàn)鏡像批量導(dǎo)出與導(dǎo)入的完整指南的文章就介紹到這了,更多相關(guān)Docker鏡像導(dǎo)入導(dǎo)出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ElasticSearch+Kibana通過Docker部署到Linux服務(wù)器中操作方法
本文介紹了Elasticsearch的基本概念,包括文檔和字段、索引和映射,還詳細描述了如何通過Docker在Linux服務(wù)器上安裝Elasticsearch、Kibana和IK分詞器,并驗證安裝,感興趣的朋友一起看看吧2025-02-02
Docker拉取鏡像失敗解決(connect: connection refused)
最近遇到Docker拉取centos鏡像時報錯,本文主要介紹了Docker拉取鏡像失敗解決(connect: connection refused),具有一定的參考價值,感興趣的可以了解一下2024-07-07
Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤
這篇文章主要介紹了Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤。文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
如何監(jiān)控docker容器運行狀態(tài) shell 腳本
這篇文章主要介紹了如何監(jiān)控docker容器運行狀態(tài) shell 腳本的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Docker系列compose?ymal文件解析學(xué)習(xí)
這篇文章主要介紹了Docker系列之compose?ymal文件解析學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

