Docker Registry是什么:集中存儲與分發鏡像的服務
Docker Registry 是一個集中存儲與分發鏡像的服務。構建完 Docker 鏡像后,就可在當前宿主機上運行。但如果想要在其他機器上運行這個鏡像,就需要手動復制。此時可借助 Docker Registry 來避免鏡像的手動復制。一個 Docker Registry 可包含多個 Docker 倉庫,每個倉庫可包含多個鏡像標簽,每個標簽對應一個 Docker 鏡像。這跟 Maven 的倉庫有點類似,如果把 Docker Registry 比作 Maven 倉庫的話,那么 Docker 倉庫就可理解為某 jar 包的路徑,而鏡像標簽則可理解為 jar 包的版本號。
Docker Registry 可分為公有 Docker Registry 和私有 Docker Registry。 最常用的 DockerRegistry 莫過于官網的 Docker Hub, 這也是默認的 Docker Registry。 Docker Hub 上存放著大量優秀的鏡像, 我們可使用 Docker 命令下載并使用。
鏡像構建完成后,可以很容易的在當前宿主機上運行,但是,如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。
一個 Docker Registry 中可以包含多個 倉庫(Repository);每個倉庫可以包含多個 標簽(Tag);每個標簽對應一個鏡像。
通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。
以 Ubuntu 鏡像 (opens new window)為例,ubuntu 是倉庫的名字,其內包含有不同的版本標簽,如,16.04, 18.04。我們可以通過 ubuntu:16.04,或者 ubuntu:18.04 來具體指定所需哪個版本的鏡像。如果忽略了標簽,比如 ubuntu,那將視為 ubuntu:latest。
倉庫名經常以 兩段式路徑 形式出現,比如 jwilder/nginx-proxy,前者往往意味著 Docker Registry 多用戶環境下的用戶名,后者則往往是對應的軟件名。但這并非絕對,取決于所使用的具體 Docker Registry 的軟件或服務。
Docker Registry 公開服務
Docker Registry 公開服務是開放給用戶使用、允許用戶管理鏡像的 Registry 服務。一般這類公開服務允許用戶免費上傳、下載公開的鏡像,并可能提供收費服務供用戶管理私有鏡像。
最常使用的 Registry 公開服務是官方的 Docker Hub (opens new window),這也是默認的 Registry,并擁有大量的高質量的 官方鏡像 (opens new window)。除此以外,還有 Red Hat 的 Quay.io (opens new window);Google 的 Google Container Registry (opens new window),Kubernetes (opens new window)的鏡像使用的就是這個服務;代碼托管平臺 GitHub (opens new window)推出的 ghcr.io (opens new window)。
由于某些原因,在國內訪問這些服務可能會比較慢。國內的一些云服務商提供了針對 Docker Hub 的鏡像服務(Registry Mirror),這些鏡像服務被稱為 加速器。常見的有 阿里云加速器 (opens new window)、DaoCloud 加速器 (opens new window)等。使用加速器會直接從國內的地址下載 Docker Hub 的鏡像,比直接從 Docker Hub 下載速度會提高很多。在 安裝 Docker 一節中有詳細的配置方法。
國內也有一些云服務商提供類似于 Docker Hub 的公開服務。比如 網易云鏡像服務 (opens new window)、DaoCloud 鏡像市場 (opens new window)、阿里云鏡像庫 (opens new window)等。
私有 Docker Registry
除了使用公開服務外,用戶還可以在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry (opens new window)鏡像,可以直接使用做為私有 Registry 服務。在 私有倉庫 一節中,會有進一步的搭建私有 Registry 服務的講解。
開源的 Docker Registry 鏡像只提供了 Docker Registry API (opens new window)的服務端實現,足以支持 docker 命令,不影響使用。但不包含圖形界面,以及鏡像維護、用戶管理、訪問控制等高級功能。
除了官方的 Docker Registry 外,還有第三方軟件實現了 Docker Registry API,甚至提供了用戶界面以及一些高級功能。
- 上一篇
Rocky是什么:使用紅帽企業 Linux 操作系統
Rocky 是指使用紅帽企業 Linux 操作系統源代碼的完整的下游二進制兼容版本。該項目旨在提供一個由社區支持且可用于生產的企業操作系統。Rocky Linux、Red Hat Enterprise Linux 以及 SUSE Linux Enterprise,已經成為
- 下一篇
Docker容器是什么?Docker鏡像是什么
Docker 容器是一個開源的應用容器引擎,讓開發者可以以統一的方式打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何安裝了 docker 引擎的服務器上(包括流行的 Linux 機器、windows 機器),也可以實現虛擬化。容