最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker實(shí)現(xiàn)批量下載pull?k8s鏡像并打標(biāo)簽tag、推送push至鏡像倉庫

 更新時(shí)間:2025年05月29日 09:39:07   作者:學(xué)亮編程手記  
這篇文章主要介紹了docker實(shí)現(xiàn)批量下載pull?k8s鏡像并打標(biāo)簽tag、推送push至鏡像倉庫方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

docker批量下載pull k8s鏡像并打標(biāo)簽tag、推送push至鏡像倉庫

#!/bin/bash
# set -eux;

images="
nginx:1.19-alpine
haproxy:2.3-alpine
traefik:2.4.8
openresty/openresty:1.19.3.1-alpine
envoyproxy/envoy:v1.16.2
osixia/keepalived:2.0.20
setzero/chrony:3.5
calico/typha:v3.19.1
calico/cni:v3.19.1
calico/node:v3.19.1
calico/kube-controllers:v3.19.1
calico/pod2daemon-flexvol:v3.19.1
calico/ctl:v3.19.1
jettech/kube-webhook-certgen:v1.5.1
kubernetesui/dashboard:v2.3.1
kubernetesui/metrics-scraper:v1.0.6
quay.io/coreos/flannel:v0.14.0
quay.io/jetstack/cert-manager-cainjector:v1.4.0
quay.io/jetstack/cert-manager-webhook:v1.4.0
quay.io/jetstack/cert-manager-controller:v1.4.0
k8s.gcr.io/kube-apiserver:v1.21.14
k8s.gcr.io/kube-controller-manager:v1.21.14
k8s.gcr.io/kube-scheduler:v1.21.14
k8s.gcr.io/kube-proxy:v1.21.14
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.5.4-0
k8s.gcr.io/coredns/coredns:v1.8.0
k8s.gcr.io/ingress-nginx/controller:v0.47.0
k8s.gcr.io/metrics-server/metrics-server:v0.5.0
"

dest_registry=${dest_registry:-'127.0.0.1:5000/kubeadm-ha'}
for image in $images ; do 
  docker pull --platform ${1:-'linux/amd64'} $image
  count=$(echo $image | grep -o '/*' | wc -l)
  if [[ $count -eq 0 ]]; then
    dest=$dest_registry/$image
  elif [[ $count -eq 1 ]]; then
    if [[ $image =~ 'k8s.gcr.io' ]]; then
      dest=$dest_registry/$(echo ${image#*/} | sed 's / _ g')
    else
      dest=$dest_registry/$(echo ${image} | sed 's / _ g')
    fi
  else
    if [[ $image =~ 'coredns' ]]; then
      dest=$dest_registry/$(echo ${image##*/} | sed 's / _ g')
    else
      dest=$dest_registry/$(echo ${image#*/} | sed 's / _ g')
    fi
  fi
  docker tag $image $dest
  docker push $dest
done

這個(gè)Bash腳本的主要功能是從公共鏡像倉庫拉取多個(gè)Kubernetes相關(guān)鏡像,重新打標(biāo)簽后推送到本地或私有的Docker鏡像倉庫。

以下是詳細(xì)解釋:

腳本結(jié)構(gòu)解析

Shebang與調(diào)試選項(xiàng)

#!/bin/bash
# set -eux;
  • #!/bin/bash:指定使用Bash解釋器。
  • set -eux(注釋狀態(tài)):若啟用,會開啟嚴(yán)格模式(報(bào)錯(cuò)退出)、打印變量展開和命令執(zhí)行日志,用于調(diào)試。

鏡像列表

images="
nginx:1.19-alpine
haproxy:2.3-alpine
...
k8s.gcr.io/ingress-nginx/controller:v0.47.0
"
  • 定義了一系列鏡像地址,涵蓋Kubernetes核心組件(如kube-apiserver)、網(wǎng)絡(luò)插件(如calico、flannel)、工具(如cert-managerdashboard)等。

目標(biāo)倉庫設(shè)置

dest_registry=${dest_registry:-'127.0.0.1:5000/kubeadm-ha'}
  • 目標(biāo)鏡像倉庫地址,默認(rèn)為本地倉庫 127.0.0.1:5000/kubeadm-ha,可通過環(huán)境變量 dest_registry 覆蓋。

主循環(huán)處理鏡像

for image in $images ; do
  docker pull --platform ${1:-'linux/amd64'} $image
  ...
done

遍歷所有鏡像,執(zhí)行以下操作:

  • 拉取鏡像docker pull --platform 指定平臺(默認(rèn)為linux/amd64)。
  • 計(jì)算路徑層級:通過斜杠數(shù)量(count)判斷鏡像路徑結(jié)構(gòu)。
  • 生成目標(biāo)標(biāo)簽:根據(jù)路徑結(jié)構(gòu)調(diào)整鏡像名稱,適應(yīng)目標(biāo)倉庫格式。
  • 重新打標(biāo)簽并推送docker tagdocker push

鏡像標(biāo)簽處理邏輯

根據(jù)鏡像路徑的斜杠數(shù)量(count),分三種情況生成目標(biāo)標(biāo)簽:

無斜杠(count=0

  • 鏡像名直接拼接至目標(biāo)倉庫。
  • 示例nginx:1.19-alpine127.0.0.1:5000/kubeadm-ha/nginx:1.19-alpine

一個(gè)斜杠(count=1

  • 來自 k8s.gcr.io 的鏡像:去除倉庫前綴,剩余部分拼接。
  • 示例k8s.gcr.io/kube-apiserver:v1.21.14kubeadm-ha/kube-apiserver:v1.21.14
  • 其他鏡像:將斜杠替換為下劃線。
  • 示例calico/typha:v3.19.1kubeadm-ha/calico_typha:v3.19.1

多個(gè)斜杠(count≥2

  • 包含 coredns 的鏡像:取最后一段路徑。
  • 示例k8s.gcr.io/coredns/coredns:v1.8.0kubeadm-ha/coredns:v1.8.0
  • 其他鏡像:去除第一個(gè)斜杠前的倉庫前綴,剩余斜杠替換為下劃線。
  • 示例quay.io/coreos/flannel:v0.14.0kubeadm-ha/coreos_flannel:v0.14.0

關(guān)鍵命令說明

拉取鏡像

docker pull --platform ${1:-'linux/amd64'} $image
  • --platform:指定鏡像架構(gòu)(如linux/arm64),需鏡像支持多平臺。

處理標(biāo)簽邏輯

docker tag $image $dest
docker push $dest
  • 根據(jù)生成的 $dest 標(biāo)簽推送鏡像到目標(biāo)倉庫。

使用場景

  • 離線環(huán)境部署:在內(nèi)網(wǎng)中搭建私有鏡像倉庫,預(yù)先拉取并推送所有依賴鏡像。
  • 統(tǒng)一鏡像來源:將分散在多個(gè)倉庫的鏡像集中管理,避免依賴外部網(wǎng)絡(luò)。
  • 解決拉取限制:規(guī)避從 k8s.gcr.io 等倉庫拉取鏡像的網(wǎng)絡(luò)問題。

注意事項(xiàng)

Sed命令潛在問題

  • 腳本中 sed 's / _ g' 應(yīng)為 sed 's/\//_/g',否則無法正確替換斜杠。

鏡像多平臺支持

  • 需確保目標(biāo)鏡像支持指定的平臺(如 linux/amd64linux/arm64)。

本地倉庫配置

  • 需提前部署Docker Registry服務(wù)(如 docker run -d -p 5000:5000 --name registry registry:2)。

示例執(zhí)行

假設(shè)目標(biāo)倉庫為 192.168.1.100:5000/myrepo,執(zhí)行命令:

dest_registry=192.168.1.100:5000/myrepo ./script.sh linux/amd64

所有鏡像將被拉取、重新打標(biāo)簽,并推送至 192.168.1.100:5000/myrepo。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker容器跟宿主機(jī)互相拷貝文件

    docker容器跟宿主機(jī)互相拷貝文件

    本文介紹了如何使用 docker cp 命令,在宿主機(jī)與 Docker 容器之間快速拷貝文件,包括從宿主機(jī)復(fù)制到容器及從容器復(fù)制到宿主機(jī)的具體操作方法
    2025-10-10
  • docker無法刪除鏡像報(bào)Error:?No?such?container的錯(cuò)誤問題

    docker無法刪除鏡像報(bào)Error:?No?such?container的錯(cuò)誤問題

    docker無法刪除鏡像的解決方法很簡單,只需要簡單三步即可完美解決docker刪除鏡像過程中,一直報(bào)Error:?No?such?container的錯(cuò)誤問題,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • Docker?Compose中配置Host網(wǎng)絡(luò)模式的具體方法及注意事項(xiàng)

    Docker?Compose中配置Host網(wǎng)絡(luò)模式的具體方法及注意事項(xiàng)

    Docker Compose 是一個(gè)用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具,下面這篇文章主要介紹了Docker?Compose中配置Host網(wǎng)絡(luò)模式的具體方法及注意事項(xiàng),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • harbor倉庫搭建全過程(配置https)

    harbor倉庫搭建全過程(配置https)

    需安裝Docker及Docker Compose,Harbor版本需匹配,因密碼加密算法升級至SHA1,需配置HTTPS以避免登錄錯(cuò)誤,步驟包括生成CA證書、修改配置、啟動(dòng)倉庫、訪問地址及數(shù)據(jù)庫調(diào)整加密算法,最后設(shè)置開機(jī)自啟
    2025-09-09
  • docker容器內(nèi)運(yùn)行jupyter映射到本地方式

    docker容器內(nèi)運(yùn)行jupyter映射到本地方式

    通過在容器內(nèi)指定Jupyter的IP為0.0.0.0,并使用--no-browser參數(shù),可以正確將Jupyter端口映射到本地,具體步驟包括在本地機(jī)器運(yùn)行Docker容器,指定端口映射;在容器內(nèi)運(yùn)行Jupyter Notebook,設(shè)置--ip和--no-browser參數(shù)(一般還需--allow-root)
    2024-11-11
  • keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡

    keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡

    本文主要介紹了keepalived + nginx + httpd 實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • 基于Docker部署GitLab環(huán)境搭建的方法步驟

    基于Docker部署GitLab環(huán)境搭建的方法步驟

    這篇文章主要介紹了基于Docker部署GitLab環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Docker在Windows上安裝和使用教程(加速容器應(yīng)用開發(fā))

    Docker在Windows上安裝和使用教程(加速容器應(yīng)用開發(fā))

    Docker依賴Linux內(nèi)核,需部署于Linux系統(tǒng)或虛擬環(huán)境,安裝需確認(rèn)架構(gòu)、下載安裝包、重啟驗(yàn)證,操作流程簡潔高效,本文給大家介紹Docker在Windows上安裝和使用教程,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • 解決docker中mysql時(shí)間與系統(tǒng)時(shí)間不一致問題

    解決docker中mysql時(shí)間與系統(tǒng)時(shí)間不一致問題

    最近在Docker中裝mysql時(shí),發(fā)現(xiàn)數(shù)據(jù)庫時(shí)間與系統(tǒng)時(shí)間相差8個(gè)小時(shí)。查詢資料發(fā)現(xiàn),docker的默認(rèn)時(shí)區(qū)是0區(qū),其實(shí)這會對安裝的容器造成不少麻煩,比如執(zhí)行日志的記錄不準(zhǔn)確等
    2021-12-12
  • 解決docker容器中出現(xiàn)Access denied for user 'root'@'172.17.0.2'(using password: YES)問題

    解決docker容器中出現(xiàn)Access denied for user &apo

    這篇文章主要介紹了解決docker容器中出現(xiàn)Access denied for user 'root'@'172.17.0.2'(using password: YES)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

惠安县| 竹山县| 乐山市| 杂多县| 博野县| 河津市| 措美县| 新蔡县| 保康县| 张家口市| 固镇县| 萝北县| 五家渠市| 中江县| 安新县| 农安县| 衡东县| 河北区| 宿迁市| 嘉祥县| 巴中市| 申扎县| 吴堡县| 祁阳县| 阳春市| 日土县| 铁力市| 从江县| 驻马店市| 武川县| 兰州市| 新巴尔虎右旗| 左云县| 家居| 佛冈县| 林西县| 济阳县| 萨迦县| 嘉禾县| 五台县| 乌什县|