
本文首發自“Docker公司”公衆号(ID:docker-cn)
編譯丨小東
每周一、三、五 與您不見不散!
我們很高興地宣布,Docker Registry HTTP API V2 規範将在 Open Container Initiative (OCI) 中采用。OCI由 linux 基金會進行管理,緻力于制定容器化産業标準。Docker 團隊很自豪地看到應用棧的另一個方面成為行業标準。正如我們對鏡像格式所做的那樣,我們很樂意作為 OCI 社群的一部分,正式與容器生态系統共享和協作。我們的分發協定是市場上所有容器注冊管理機構的基礎,它非常的強大,容器内容遍布全球。
這個協定是什麼?
通過這個協定我們可以看到,Docker 核心功能之一就是能夠上傳和下載下傳鏡像。這個概念從建立最初的“Hello, World”容器開始就已經介紹給了每個使用者,而且它占了 Docker 體驗的很大一部分。我們時常坐在電腦前感歎這個神奇的概念,這種簡單的能力很容易被人忽視其中大量的設計與思考。
當 Docker 首次釋出時,團隊就制定了 Image Registry 的協定,并很快投入使用。Image Registry 提供了一種可以跨機器存儲鏡像的通用服務。它可以讓使用者在一台機器上建構鏡像,然後在另一台機器下載下傳這個鏡像,并在這台機器上運作該鏡像。現在有一種很友善、快捷的方法拉取并運作整個軟體。這個實作為 Docker Hub 提供動力,并最終實作開源(
https://github.com/docker/docker-registry)。這個協定和它背後的實作最終被稱為 V1 協定。許多鏡像都可以被上傳和下載下傳,深受開發人員喜愛。
演 化
上傳和下載下傳鏡像持續不斷,但是随着使用者用其他的 Registry 來使用 Docker 時,V1 協定的問題就出現了。問題的核心圍繞着 Registry 之間共享身份的概念,以及與 Docker 實作的耦合度過緊。問題在于,如果一個 Docker 引擎從兩個不同的 Registry 擷取鏡像,那麼 Docker 引擎可能會對鏡像的身份标簽産生分歧。我們需要修改一些東西確定使用者使用多個 Registry 時不會出現問題。
到 2014 年底,Docker 通過引入具有初始 API 結構的提案來解決這些問題。問題的關鍵是設計出具有 Content—addressable 的鏡像,它允許 Registry 為鏡像提供通用的身份标簽,并去除鏡像格式内部細節與 Docker 引擎之間的耦合性,進而使其能夠獨立發展。社群聚集在一起,就該提案提出了140條意見,并納入了規範和實施。這一努力的結果是,在2015年春季釋出了 Docker Registry 2.0,并在 Docker 1.6 版本中支援 GA。自此之後,Docker 社群就發展起來了,并一直緻力于滿足使用者不斷增長的需求。
下一步
随着 Docker 的普及,該協定已在整個行業中得到了廣泛應用,并在各種各樣環境中進行了測試。該協定與諸如簽名和驗證等補充技術相結合,就如同 Docker EE 一樣。通過将此規範捐獻給 OCI,我們可以確定容器體驗的這一重要部分成為 OCI 官方标準。随着對分發規範提案的認可,該協定将作為 OCI 的一部分推動容器行業蓬勃發展。