Docker Registry。它是全部倉庫(包括共有和私有)以及工做流的中央Registry。 數據庫
有三個角色,分別是index、registry和registry client 安全
角色1 …… index spa
index 負責並維護有關用戶賬戶、鏡像的校驗以及公共命名空間的信息。它使用如下組件維護這些信息: 繼承
- Web UI
- 元數據存儲
- 認證服務
- 符號化
角色 2 --Registry token
registry是鏡像和圖表的倉庫。然而,它沒有一個本地數據庫,也不提供用戶的身份認證,由S三、雲文件和本地文件系統提供數據庫支持。此外,它經過Index Auth service的Token方式進行身份認證。Registries能夠有不一樣的類型。如今讓咱們來分析其中的幾中類型: 工作流
- Sponsor Registry:第三方的registry,供客戶和Docker社區使用。
- Mirror Registry:第三方的registry,只讓客戶使用。
- Vendor Registry:由發佈Docker鏡像的供應商提供的registry。
- Private Registry:經過設有防火牆和額外的安全層的私有實體提供的registry。
角色 3 --Registry Client 社區
Docker充當registry客戶端來負責維護推送和拉取的任務,以及客戶端的受權。
Docker Registry工做流程詳解。 cli
情景A:用戶要獲取並下載鏡像。所涉及的步驟以下: 命名空間
- 用戶發送請求到index來下載鏡像。
- index 發出響應,返回三個相關部分信息:
- 該鏡像所處的registry該鏡像包括全部層的校驗
- 該鏡像包括全部層的校驗
- 以受權爲目的的Token > 注意:當請求header裏有X-Docker-Token時纔會返回Token。而私人倉庫須要基本的身份驗證,對於公有倉庫這一點不是強制性的。
- 用戶經過響應後返回的Token和registry溝通,registry全權負責鏡像,它用來存儲基本的鏡像和繼承的層。
- registry如今要與index證明該token是被受權的。
- index會發送「true」 或者 「false」給registry,由此斷定是否容許用戶下載所須要的鏡像。