Docker入門教程(四)Docker Registry

jopen 9年前發布 | 43K 次閱讀 Docker

【編者的話】DockerOne組織翻譯了Flux7的Docker入門教程,本文是系列入門教程的第四篇,介紹了Docker Registry,Docker Registry是Docker中的重要組件,本文通過情景的方式對其進行了介紹,圖文并茂,推薦。

Docker系列教程的上一篇文章中,我們 討論了Dockerfile的重要性并提供了讓自動構建鏡像更容易的一系列Dockerfile的命令。在這篇文章中,我們將介紹一個重要的Docker 組件:Docker Registry。它是所有倉庫(包括共有和私有)以及工作流的中央Registry。在我們深入Docker Registry之前,先讓我們去看看一些常見的術語和倉庫相關的概念。

  1. Repositories(倉庫)可以被標記為喜歡或者像書簽一樣標記起來
  2. 用戶可以在倉庫下評論。
  3. 私有倉庫和共有倉庫類似,不同之處在于前者不會在搜索結果中顯示,并且也沒有訪問它的權限。用戶設置為合作者才能訪問私有庫。
  4. 成功推送之后配置webhooks
  5. </ol>
    Docker Registry有三個角色,分別是index、registry和registry client。

    角色 1 -- Index

    index負責并維護有關用戶帳戶、鏡像的校驗以及公共命名空間的信息。它使用以下組件維護這些信息:

    • Web UI
    • 元數據存儲
    • 認證服務
    • 符號化
    • </ul>
      這也分解了較長的URL,以方便使用和驗證庫的擁有者。

      角色 2 --Registry

      registry是鏡像和圖表的倉庫。然而,它不具有本地數據庫以及不提供用戶認證,由S3、云文件和本地文件系統提供數據庫支持。此外,通過Index Auth service的Token的方式進行認證。Registries可以有不同的類型。我們來分析其中的幾個:

      1. Sponsor Registry:第三方的registry,供其客戶和Docker社區使用。
      2. Mirror Registry:第三方的registry,只讓客戶使用。
      3. Vendor Registry:由分發Docker鏡像的供應商提供的registry。
      4. Private Registry:通過與防火墻和額外的安全層的私有實體提供的registry。
      5. </ol>
        角色 3 --Registry Client
        Docker充當registry客戶端來維護推送和拉取,以及客戶端的授權。

        Docker Registry工作流程詳解

        現在,讓我們討論五種情景模式,以便更好地理解Docker Registry。

        情景A:用戶要獲取并下載鏡像。所涉及的步驟如下:

        1. 用戶發送請求到index來下載鏡像。
        2. index 響應返回三個相關部分信息:

          • 該鏡像位于的registry
          • 該鏡像包括所有層的校驗
          • 以授權目的Token > 注意:當請求header里有X-Docker-Token時才會返回Token。而私人倉庫需要基本的身份驗證,對于公有庫它不是強制性的。
          • </ul> </li>

          • 用戶通過響應中返回的Token和registry溝通,registry全權負責鏡像,它存儲基本的鏡像和繼承的層。
          • registry現在要與index證實該token是被授權的。
          • index會發送“true” 或者 “false”給registry,由此允許用戶下載所需要的鏡像。
          • </ol>

            Docker入門教程(四)Docker Registry


            情景B:在用戶想要推送鏡像到registry中。涉及的步驟如下:

            1. 用戶發送帶證書請求到index要求分配庫名。
            2. 在成功認證,命名空間可用以及庫名被分配之后。index響應返回臨時的token。
            3. 鏡像連帶token,一起被推送到registry中。
            4. registry與index證實token,然后在index驗證之后開始讀取推送流。
            5. 該index然后更新由Docker生成的鏡像校驗。
            6. </ol>

              Docker入門教程(四)Docker Registry


              情景C:用戶想要從index或registry中刪除鏡像:

              1. index接收來自Docker一個刪除庫的信號。
              2. 如果index驗證庫成功,它將刪除該庫,并返回一個臨時token。
              3. registry現在接收到帶有該token的刪除信號。
              4. registry與index核實該token,然后刪除庫以及所有相關信息。
              5. Docker現在通知有關刪除的index,然后index移除庫的所有記錄。
              6. </ol>

                Docker入門教程(四)Docker Registry


                情景D:用戶希望在沒有index的獨立模式中使用registry。
                使用沒有index的registry,這完全由Docker控制,它最適合于在私有網絡存儲鏡像。registry運行在一個特殊的模式里,此模式限制了registry與Docker index的通信。所有的安全和身份驗證需要用戶自己注意。

                情景E:該用戶想要在有index的獨立模式中使用registry。
                在這種情況下,一個自定義的index會被創建在私有網絡里來存儲和訪問鏡像。然而,通知Docker有關定制的index是耗時的。 Docker提供一個有趣的概念chaining registries,從而,實現負載均衡和為具體請求而指定的registry分配。在接下來的Docker教程系列中,我們將討論如何在上述每個情景 中使用Docker Registry API ,以及深入了解Docker Security。

                原文鏈接:Part 4: Registry & Workflows(翻譯:田浩 審校:李穎杰)

                來自:http://dockerone.com/article/104

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!