前言:在我之前的部落格中,我分享了 Harbor 倉庫搭建的詳細操作步驟。然而,在實際的生產環境中,並非每個 Docker 環境都需要部署一個規模龐大的 Harbor 倉庫。有時,一個輕量級的本地 Registry 私有映象倉庫會更為便捷。本文將介紹如何搭建一個本地 Registry 私有映象倉庫,並提供一個自動化指令碼,用於從其他環境批次 “save” 眾多映象包後,一鍵自動匯入到本地 Registry 私有映象倉庫。
第一步:上傳 registry 的映象到 Docker伺服器上
第二步:建立本地映象倉庫儲存卷
命令:mkdir -p /data/registry
命令:docker load -i registry-2.7.1.tar
第三步:執行 registry 服務
命令:docker run -d --name registry -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always registry.szlanyou.com/lke/registry:2.7.1
第四步:修改 docker 配置檔案,增加以下配置
這個命令的配置在各docker節點都需要做
命令:vim /etc/docker/daemon.json
新增:
{
"insecure-registries": ["<ip>:5000"]
}
參考詳細資訊:
{
"log-opts": {
"max-size": "5m",
"max-file": "3"
},
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"exec-opts": [
"native.cgroupdriver=systemd"
],
"insecure-registries": ["ip:5000"]
}
第五步:重啟 docker 服務讓配置生效
這兩個命令各個節點都需要執行
systemctl daemon-reload
systemctl restart docker
第六步:上傳本地映象到Docker伺服器上,並執行以下命令,生成imagelist.txt檔案
命令:docker images | grep -v REPOSITORY | awk '{OFS=":";print $1,$2}' > imagelist.txt
第七步:執行image_push.sh自動化指令碼將映象服務批次上傳到本地倉庫
#!/bin/bash
# 設定新映象倉庫的域名和舊域名
new_domain="<ip>:5000"
old_domain="<abc.dfmc.com.cn>"
# 讀取imagelist.txt檔案中的每一行
while IFS= read -r line; do
# 檢查映象是否存在
if [[ $(docker images -q "$line") ]]; then
# 替換舊域名
new_image=$(echo "$line" | sed "s|$old_domain|$new_domain|")
# 列印資訊,確認哪些映象將被打包
echo "Retagging $line -> $new_image"
# 重新標記映象
docker tag "$line" "$new_image"
# 推送映象到新的倉庫
echo "Pushing $new_image"
docker push "$new_image"
else
echo "Image not found: $line"
fi
done < imagelist.txt
注意:以上
上儲存後執行 sh image_push.sh
命令,等待映象上傳到本地倉庫後即可