亚洲国产成人精品久久_欧美日韩国产综合一区二区_亚洲精品理论电影_色综合久久中文字幕

阿里云開源image-syncer工具,容器鏡像大批量遷移同步利器

放大字體  縮小字體 發布日期:2019-11-21  來源:來自互聯網  作者:來自互聯網  瀏覽次數:1349
導讀

只需要保證 image-syncer 的運行環境與需要同步的 registry 網絡連通,使用者就可以快速地完成從鏡像倉庫的遷移、拷貝以及增量同步,并且該工具對硬件資源幾乎沒有要求(因為 image-s…

雷鋒網 AI 開發者按:怎么把已有的容器鏡像平滑的遷移到阿里云鏡像服務 ACR 上?最近阿里云給出了很好的方案,他們開源了 image-syncer 工具,能夠使得成百上千個鏡像實現平滑的批量遷移,其中最大鏡像倉庫的總量可以達到 3T 以上。而這一工具,也被稱為容器鏡像遷移/同步利器,雷鋒網 AI 開發者將其重點內容及開源地址整理編輯如下。

什么是 image-syncer?

顧名思義,image-syncer 本質上就是圖像同步器。它是一個 docker 鏡像同步工具,能夠將多對多的鏡像倉庫同步,并支持目前絕大多數主流的 docker 鏡像倉庫服務,例如:ACR、DockerHub、Quay、自建 Harbor 等。

通常情況下,在 k8s 集群遷移場景中,鏡像倉庫之間進行鏡像遷移/同步是基本需求,而使用 docker pull/push 結合腳本的傳統方式進行鏡像同步,有如下幾個局限性:

  • 依賴磁盤存儲,需要及時進行本地鏡像的清理,并且落盤造成多余的時間開銷,難以勝任生產場景中大量鏡像的遷移
  • 依賴 docker 程序,docker daemon 對 pull/push 的并發數進行了嚴格的限制,無法進行高并發同步
  • 一些功能只能通過 HTTP api 進行操作,單純使用 docker cli 無法做到,使腳本變得復雜

圖 1 阿里云遷移框架

而 image-syncer 開發之初的定位就是一個簡單、易用的批量鏡像遷移/同步工具;因此,它的特性如下:

  • 支持多對多鏡像倉庫同步
  • 支持基于 Docker Registry V2 搭建的 docker 鏡像倉庫服務 (如 Docker Hub、 Quay、 阿里云鏡像服務 ACR、 Harbor 等)
  • 同步只經過內存和網絡,不依賴磁盤存儲,同步速度快
  • 增量同步, 通過對同步過的鏡像 blob 信息落盤,不重復同步已同步的鏡像
  • 并發同步,可以通過配置文件調整并發數
  • 自動重試失敗的同步任務,可以解決大部分鏡像同步中的網絡抖動問題
  • 不依賴 docker 以及其他程序

只需要保證 image-syncer 的運行環境與需要同步的 registry 網絡連通,使用者就可以快速地完成從鏡像倉庫的遷移、拷貝以及增量同步,并且該工具對硬件資源幾乎沒有要求(因為 image-syncer 嚴格控制網絡連接數目=并發數,所以只有在當單個鏡像層過大的情況下,并發數目過大可能會打滿內存,內存占用 <= 并發數 x 最大鏡像層大小)。

如何使用 image-syncer?

運行 image-syncer,只需要提供一個配置文件,內容如下:

{

"auth": { // 認證字段,其中每個對象為一個 registry 的一個賬號和

// 密碼;通常,同步源需要具有 pull 以及訪問 tags 權限,

// 同步目標需要擁有 push 以及創建倉庫權限,如果沒有提供,則默認匿名訪問

"quay.io": { // registry 的 url,需要和下面 images 中對應 registry 的 url 相同

"username": "xxx", // 用戶名,可選

"password": "xxxxxxxxx", // 密碼,可選

"insecure": true // registry 是否是 http 服務,如果是,insecure 字段需要為 true,默認是 false,可選,支持這個選項需要 image-syncer 版本 > v1.0.1

},

"registry-beijing.aliyuncs": {

"username": "xxx",

"password": "xxxxxxxxx"

},

"registry.hub.docker": {

"username": "xxx",

"password": "xxxxxxxxxx"

}

},

"images": {

// 同步鏡像規則字段,其中條規則包括一個源倉庫(鍵)和一個目標倉庫(值)

// 同步的最大單位是倉庫(repo),不支持通過一條規則同步整個 namespace 以及 registry

// 源倉庫和目標倉庫的格式與 docker pull/push 命令使用的鏡像 url 類似(registry/namespace/repository:tag)

// 源倉庫和目標倉庫(如果目標倉庫不為空字符串)都至少包含 registry/namespace/repository

// 源倉庫字段不能為空,如果需要將一個源倉庫同步到多個目標倉庫需要配置多條規則

// 目標倉庫名可以和源倉庫名不同(tag 也可以不同),此時同步功能類似于:docker pull + docker tag + docker push

"quay.io/coreos/kube-rbac-proxy": "quay.io/ruohe/kube-rbac-proxy",

"xxxx":"xxxxx",

"xxx/xxx/xx:tag1,tag2,tag3":"xxx/xxx/xx"

// 當源倉庫字段中不包含 tag 時,表示將該倉庫所有 tag 同步到目標倉庫,此時目標倉庫不能包含 tag

// 當源倉庫字段中包含 tag 時,表示只同步源倉庫中的一個 tag 到目標倉庫,如果目標倉庫中不包含 tag,則默認使用源 tag

// 源倉庫字段中的 tag 可以同時包含多個(比如"a/b/c:1,2,3"),tag 之間通過","隔開,此時目標倉庫不能包含 tag,并且默認使用原來的 tag

// 當目標倉庫為空字符串時,會將源鏡像同步到默認 registry 的默認 namespace 下,并且 repo 以及 tag 與源倉庫相同,默認 registry 和默認 namespace 可以通過命令行參數以及環境變量配置,參考下面的描述

}

}

{

"auth": { // 認證字段,其中每個對象為一個 registry 的一個賬號和

// 密碼;通常,同步源需要具有 pull 以及訪問 tags 權限,

// 同步目標需要擁有 push 以及創建倉庫權限,如果沒有提供,則默認匿名訪問

"quay.io": { // registry 的 url,需要和下面 images 中對應 registry 的 url 相同

"username": "xxx", // 用戶名,可選

"password": "xxxxxxxxx", // 密碼,可選

"insecure": true // registry 是否是 http 服務,如果是,insecure 字段需要為 true,默認是 false,可選,支持這個選項需要 image-syncer 版本 > v1.0.1

},

"registry-beijing.aliyuncs": {

"username": "xxx",

"password": "xxxxxxxxx"

},

"registry.hub.docker": {

"username": "xxx",

"password": "xxxxxxxxxx"

}

},

"images": {

// 同步鏡像規則字段,其中條規則包括一個源倉庫(鍵)和一個目標倉庫(值)

// 同步的最大單位是倉庫(repo),不支持通過一條規則同步整個 namespace 以及 registry

// 源倉庫和目標倉庫的格式與 docker pull/push 命令使用的鏡像 url 類似(registry/namespace/repository:tag)

// 源倉庫和目標倉庫(如果目標倉庫不為空字符串)都至少包含 registry/namespace/repository

// 源倉庫字段不能為空,如果需要將一個源倉庫同步到多個目標倉庫需要配置多條規則

// 目標倉庫名可以和源倉庫名不同(tag 也可以不同),此時同步功能類似于:docker pull + docker tag + docker push

"quay.io/coreos/kube-rbac-proxy": "quay.io/ruohe/kube-rbac-proxy",

"xxxx":"xxxxx",

"xxx/xxx/xx:tag1,tag2,tag3":"xxx/xxx/xx"

// 當源倉庫字段中不包含 tag 時,表示將該倉庫所有 tag 同步到目標倉庫,此時目標倉庫不能包含 tag

// 當源倉庫字段中包含 tag 時,表示只同步源倉庫中的一個 tag 到目標倉庫,如果目標倉庫中不包含 tag,則默認使用源 tag

// 源倉庫字段中的 tag 可以同時包含多個(比如"a/b/c:1,2,3"),tag 之間通過","隔開,此時目標倉庫不能包含 tag,并且默認使用原來的 tag

// 當目標倉庫為空字符串時,會將源鏡像同步到默認 registry 的默認 namespace 下,并且 repo 以及 tag 與源倉庫相同,默認 registry 和默認 namespace 可以通過命令行參數以及環境變量配置,參考下面的描述

}

}

用戶可以根據配置不同的鏡像同步規則組合,以匹配不同的遷移/同步需求,如將單個鏡像 repo 同步到多個不同的鏡像 repo、將多個源鏡像同步到單個鏡像 repo 中(以 tag 區分)、在同一個 registry 中以不同的名字拷貝一個鏡像 repo 等等。

需要注意的是,如果匿名訪問作為同步源的 registry 地址,可能存在權限問題無法 pull 鏡像以及無法獲取 tags,這種情況下需要在" auth "中加入有對應權限的賬號密碼;而如果匿名訪問作為同步目標的 registry 地址,可能存在權限問題無法 push 鏡像,同樣也可能需要用戶提供有對應權限的賬號密碼。

通常從自建 harbor 同步鏡像到 ACR 需要 5 個步驟,包括:

  • 創建 ACR 實例
  • 創建命名空間
  • 創建訪問憑證
  • 進行權限管理,完成配置

圖 2 最小權限設置示例

  • 下載 image-syncer 可執行文件(目前只支持 linux amd64 版本,可以自行編譯)并解壓,然后運行工具

最新版源碼以及二進制文件:

https://github/AliyunContainerService/image-syncer/releases/tag/v1.0.3

最新版源碼以及二進制文件:

https://github/AliyunContainerService/image-syncer/releases/tag/v1.0.3

一次同步會經歷三個階段:生成同步任務、執行同步任務以及重試失敗任務;其中,每個同步任務都代表了一個需要同步的 tag(鏡像),如果配置文件中某條規則沒有指定 tag,在「生成同步任務」階段會自動 list 源倉庫所有 tag,并生成對應的同步任務,如果生成同步任務失敗,也會在重試階段進行重試。(故意配錯賬號密碼時)執行輸出如下:

圖 3 配錯賬號密碼時執行輸出

正常運行的輸出:

圖 4 正常操作時執行輸出

在運行時,image-syncer 會打印出如下的日志信息:

圖 5 輸出結果日志

而在同步結束之后,image-syncer 也會統計成功和失敗的同步任務數目(每個同步任務代表一個鏡像),并在標準輸出和日志中打印 "Finished, FAILED TASKS> sync tasks failed, TASKS> tasks generate failed" 的字樣,從而可以獲得同步的結果。

圖 6 部分其它參數示例

原文鏈接:

https://yq.aliyun/articles/727565?utm_content=g_1000088598

Github 開源地址:

https://github/AliyunContainerService/image-syncer

更多 FAQ 參見:

https://github/AliyunContainerService/image-syncer/blob/master/FAQs.md

原文鏈接:

https://yq.aliyun/articles/727565?utm_content=g_1000088598

Github 開源地址:

https://github/AliyunContainerService/image-syncer

更多 FAQ 參見:

https://github/AliyunContainerService/image-syncer/blob/master/FAQs.md

雷鋒網 AI 開發者

雷鋒網年度評選——尋找19大行業的最佳AI落地實踐

創立于2017年的「AI最佳掘金案例年度榜單」,是業內首個人工智能商業案例評選活動。雷鋒網從商用維度出發,尋找人工智能在各個行業的最佳落地實踐。

第三屆評選已正式啟動,關注微信公眾號“雷鋒網”,回復關鍵詞“榜單”參與報名。詳情可咨詢微信號:xqxq_xq

 
 
免責聲明
本文為會員免費發布,僅代表發布者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理。
 
 
主站蜘蛛池模板: 日韩成人手机在线| 日韩欧美精品一区二区| 国产精品精品国产| 国产偷久久久精品专区| 亚洲精品不卡| 99高清视频有精品视频| 欧美精品久久久久久久久久久| 国产精品一香蕉国产线看观看| 天天摸天天碰天天添| 国产狼人综合免费视频| 免费观看亚洲视频| 日韩中文在线字幕| 91久久精品美女| 国产mv免费观看入口亚洲| 免费国产成人看片在线| 国产乱子伦精品| 国产日韩在线亚洲字幕中文 | 黄色国产精品一区二区三区| 亚洲精品日韩在线观看| 国产精品高清免费在线观看| 精品国产一区二区三区久久狼黑人 | 国产福利久久| 日韩福利在线| 国产伦理久久久| 黄色片免费在线观看视频| 一级日韩一区在线观看| 在线国产99| 日韩在线免费观看视频| 亚洲精品在线免费看| 日本亚洲欧洲色α| 国产在线不卡精品| 国产欧美日韩高清| 国产精品精品视频| 日韩免费观看网站| 久久超碰亚洲| 亚洲一区中文字幕| 国产精品美女无圣光视频| 日产中文字幕在线精品一区| 激情小说网站亚洲综合网| 激情六月丁香婷婷| 国产福利精品视频|