在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

開(kāi)源企業(yè)級(jí)容器Registry架構(gòu)簡(jiǎn)介

大小:0.4 MB 人氣: 2017-10-11 需要積分:1
VMware公司最近開(kāi)源了企業(yè)級(jí)Registry項(xiàng)目Harbor,由VMware中國(guó)研發(fā)的團(tuán)隊(duì)負(fù)責(zé)開(kāi)發(fā)。Harbor項(xiàng)目是幫助用戶(hù)迅速搭建一個(gè)企業(yè)級(jí)的registry 服務(wù)。它以Docker公司開(kāi)源的registry為基礎(chǔ),提供了管理UI, 基于角色的訪(fǎng)問(wèn)控制(Role Based Access Control),AD/LDAP集成、以及審計(jì)日志(Audit logging) 等企業(yè)用戶(hù)需求的功能,同時(shí)還原生支持中文,對(duì)廣大中國(guó)用戶(hù)是一個(gè)好消息。本文將介紹Harbor項(xiàng)目的主要組件,并闡述Harbor的工作原理
  架構(gòu)介紹
  
  Harbor在架構(gòu)上主要由五個(gè)組件構(gòu)成:
  Proxy:Harbor的registry, UI, token等服務(wù),通過(guò)一個(gè)前置的反向代理統(tǒng)一接收瀏覽器、Docker客戶(hù)端的請(qǐng)求,并將請(qǐng)求轉(zhuǎn)發(fā)給后端不同的服務(wù)。
  Registry: 負(fù)責(zé)儲(chǔ)存Docker鏡像,并處理dockerpush/pull 命令。由于我們要對(duì)用戶(hù)進(jìn)行訪(fǎng)問(wèn)控制,即不同用戶(hù)對(duì)Docker image有不同的讀寫(xiě)權(quán)限,Registry會(huì)指向一個(gè)token服務(wù),強(qiáng)制用戶(hù)的每次docker pull/push請(qǐng)求都要攜帶一個(gè)合法的token,Registry會(huì)通過(guò)公鑰對(duì)token 進(jìn)行解密驗(yàn)證。
  Core services: 這是Harbor的核心功能,主要提供以下服務(wù):
  UI:提供圖形化界面,幫助用戶(hù)管理registry上的鏡像(image), 并對(duì)用戶(hù)進(jìn)行授權(quán)。 webhook:為了及時(shí)獲取registry
  上image狀態(tài)變化的情況, 在Registry上配置webhook,把狀態(tài)變化傳遞給UI模塊。
  token服務(wù):負(fù)責(zé)根據(jù)用戶(hù)權(quán)限給每個(gè)docker push/pull命令簽發(fā)token.Docker
  客戶(hù)端向Regi?stry服務(wù)發(fā)起的請(qǐng)求,如果不包含token,會(huì)被重定向到這里,獲得token后再重新向Registry進(jìn)行請(qǐng)求。
  Database:為coreservices提供數(shù)據(jù)庫(kù)服務(wù),負(fù)責(zé)儲(chǔ)存用戶(hù)權(quán)限、審計(jì)日志、Docker image分組信息等數(shù)據(jù)。
  Log collector:為了幫助監(jiān)控Harbor運(yùn)行,負(fù)責(zé)收集其他組件的log,供日后進(jìn)行分析。
  技術(shù)實(shí)現(xiàn)
  Harbor的每個(gè)組件都是以Docker 容器的形式構(gòu)建的,因此很自然地,我們使用Docker Compose來(lái)對(duì)它進(jìn)行部署。
  在源代碼中(https://github.com/vmware/harbor), 用于部署Harbor的Docker Compose 模板位于 /Deployer/docker-compose.yml. 打開(kāi)這個(gè)模板文件,會(huì)發(fā)現(xiàn)Harbor由5個(gè)容器組成:
  proxy: 由Nginx 服務(wù)器構(gòu)成的反向代理。registry:由Docker官方的開(kāi)源registry 鏡像構(gòu)成的容器實(shí)例。ui: 即架構(gòu)中的core services, 構(gòu)成此容器的代碼是Harbor項(xiàng)目的主體。mysql: 由官方MySql鏡像構(gòu)成的數(shù)據(jù)庫(kù)容器。log: 運(yùn)行著rsyslogd的容器,通過(guò)log-driver的形式收集其他容器的日志。
  這幾個(gè)容器通過(guò)Dockerlink的形式連接在一起,這樣,在容器之間可以通過(guò)容器名字互相訪(fǎng)問(wèn)。對(duì)終端用戶(hù)而言,只需要暴露proxy(即Nginx)的服務(wù)端口
  工作原理
  下面以?xún)蓚€(gè)Docker 命令為例,講解主要組件之間如何協(xié)同工作。
  docker login
  假設(shè)我們將Harbor部署在IP 為192.168.1.10的虛機(jī)上。用戶(hù)通過(guò)docker login命令向這個(gè)Harbor服務(wù)發(fā)起登錄請(qǐng)求:
  # docker login 192.168.1.10
  當(dāng)用戶(hù)輸入所需信息并點(diǎn)擊回車(chē)后,Docker 客戶(hù)端會(huì)向地址“192.168.1.10/v2/” 發(fā)出HTTP GET請(qǐng)求。Harbor的各個(gè)容器會(huì)通過(guò)以下步驟處理:
  
  (a) 首先,這個(gè)請(qǐng)求會(huì)由監(jiān)聽(tīng)80端口的proxy容器接收到。根據(jù)預(yù)先設(shè)置的匹配規(guī)則,容器中的Nginx會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給后端的registry 容器;
  (b) 在registry容器一方,由于配置了基于token的認(rèn)證,registry會(huì)返回錯(cuò)誤代碼401,提示Docker客戶(hù)端訪(fǎng)問(wèn)token服務(wù)綁定的URL。在Harbor中,這個(gè)URL指向Core Services;
  (c) Docker 客戶(hù)端在接到這個(gè)錯(cuò)誤代碼后,會(huì)向token服務(wù)的URL發(fā)出請(qǐng)求,并根據(jù)HTTP協(xié)議的Basic Authentication規(guī)范,將用戶(hù)名密碼組合并編碼,放在請(qǐng)求頭部(header);
  (d) 類(lèi)似地,這個(gè)請(qǐng)求通過(guò)80端口發(fā)到proxy容器后,Nginx會(huì)根據(jù)規(guī)則把請(qǐng)求轉(zhuǎn)發(fā)給ui容器,ui容器監(jiān)聽(tīng)token服務(wù)網(wǎng)址的處理程序接收到請(qǐng)求后,會(huì)將請(qǐng)求頭解碼,得到用戶(hù)名、密碼;
  (e) 在得到用戶(hù)名、密碼后,ui容器中的代碼會(huì)查詢(xún)數(shù)據(jù)庫(kù),將用戶(hù)名、密碼與mysql容器中的數(shù)據(jù)進(jìn)行比對(duì)(注:ui 容器還支持LDAP的認(rèn)證方式,在那種情況下ui會(huì)試圖和外部LDAP服務(wù)進(jìn)行通信并校驗(yàn)用戶(hù)名/密碼)。比對(duì)成功,ui容器會(huì)返回表示成功的狀態(tài)碼,并用密鑰生成token,放在響應(yīng)體中返回給Docker 客戶(hù)端。
  至此,一次docker login 成功地完成了,Docker客戶(hù)端會(huì)把步驟(c)中編碼后的用戶(hù)名密碼保存在本地的隱藏文件中。
  docker push的流程
  
  用戶(hù)登錄成功后用docker push命令向Harbor 推送一個(gè)Docker image:
  # docker push 192.168.1.10/library/hello-world
  (a) 首先,docker 客戶(hù)端會(huì)重復(fù)login的過(guò)程,首先發(fā)送請(qǐng)求到registry,之后得到token 服務(wù)的地址;
  (b) 之后,Docker 客戶(hù)端在訪(fǎng)問(wèn)ui容器上的token服務(wù)時(shí)會(huì)提供額外信息,指明它要申請(qǐng)一個(gè)對(duì)imagelibrary/hello-world進(jìn)行push操作的token;
  (c) token 服務(wù)在經(jīng)過(guò)Nginx轉(zhuǎn)發(fā)得到這個(gè)請(qǐng)求后,會(huì)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)核實(shí)當(dāng)前用戶(hù)是否有權(quán)限對(duì)該image進(jìn)行push。如果有權(quán)限,它會(huì)把image的信息以及push動(dòng)作進(jìn)行編碼,并用私鑰簽名,生成token返回給Docker客戶(hù)端;
  (d) 得到token之后Docker客戶(hù)端會(huì)把token放在請(qǐng)求頭部,向registry發(fā)出請(qǐng)求,試圖開(kāi)始推送image。Registry 收到請(qǐng)求后會(huì)用公鑰解碼token并進(jìn)行核對(duì),一切成功后,image的傳輸就開(kāi)始了。
  本文并未涉及Harbor項(xiàng)目本身的配置、部署,這方面請(qǐng)參考Harbor在github上的文檔:https://github.com/vmware/harbor
?

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

開(kāi)源企業(yè)級(jí)容器Registry架構(gòu)簡(jiǎn)介下載

      發(fā)表評(píng)論

      用戶(hù)評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 色视频一区| 久青草免费在线视频| 不卡视频一区| 97玖玖| 大香交伊人| 伦理一区二区三区| 青草91视频免费观看| 五月情视频在线观看| 日本一道高清不卡免费| 91md天美精东蜜桃传媒在线| 操片| 国产片在线观看狂喷潮bt天堂| 天天骑夜夜操| 在线天堂中文在线网| 夜夜做夜夜爽| yy6080理aa级伦大片一级| 鲁久久| 国产三级在线观看| 久久伊人成人网| 丁香网五月| 天天综合久久久网| 五月天婷婷视频在线观看| 白嫩美女在线啪视频观看| 2022欧美高清中文字幕在线看| 国产成人精品亚洲| 777成了人乱视频| 欧美一级黄色片在线观看| 天天干天天插天天射| 69天堂| 奇米99| 中文字幕一区二区三区在线观看 | 最新欧美精品一区二区三区 | 福利片在线观看免费高清| 香蕉久久高清国产精品免费| 91大神亚洲影视在线| 俺也来国产精品欧美在线观看| 欧美高清xx| 中文一级黄色片| 欧美专区一区二区三区| 成人午夜性视频欧美成人| 久草干|