Docker - 公共倉庫



Docker公共倉庫是用於儲存Docker映象的集中式位置,Docker映象本質上是用於建立容器的模板。這些倉庫透過為開發者或使用者提供一種簡單的方法來訪問和下載預構建的軟體包,從而簡化了容器化應用程式的共享和分發。公共倉庫對所有人開放;它們通常包含大量與各種用例相關的映象,例如執行流行的作業系統(如Ubuntu或CentOS)或複雜的軟體棧(如WordPress或Node.js)。

Docker Hub是公共倉庫的最佳示例,它是Docker的預設登錄檔。該倉庫託管著大量的官方和社群貢獻的映象,可以輕鬆地將它們拉取並在任何使用者的系統上執行。公共倉庫促進了協作,並透過允許人們共享預配置的環境以及庫和許多其他強大的工具來加快軟體開發速度。

Docker公共倉庫與私有倉庫

以下是突出顯示Docker私有倉庫和公共倉庫之間關鍵區別的一對一比較。

特性 公共倉庫 私有倉庫
可見性 任何人都可以訪問 僅授權使用者可訪問
訪問控制 無細粒度訪問控制 細粒度訪問控制(團隊和角色)
成本 免費使用 通常需要訂閱才能獲得更多儲存空間和功能
用途 非常適合開源專案和共享 非常適合專有專案和敏感專案
隱私 映象公開可見 映象對公眾隱藏
安全 對誰能訪問和使用映象的控制較少 透過受限訪問增強安全性
協作 對社群協作開放 僅限於指定的協作者
可擴充套件性 免費儲存空間有限 按計劃提供可擴充套件的儲存選項

流行的Docker公共倉庫

在本節中,讓我們看一下三個最突出和最廣泛使用的公共Docker倉庫。

Docker Hub

Docker Hub是Docker的預設公共登錄檔。它是使用最廣泛的倉庫,包含大量來自知名廠商的官方映象和大量社群貢獻的映象。

主要功能

  • 大型映象倉庫 − 它提供了一個龐大的Docker映象倉庫,包括流行軟體的官方映象和各種社群貢獻的映象。
  • 官方映象 − 提供經過精心挑選的高質量映象子集,這些映象由軟體供應商自己維護和更新。
  • 自動化構建 − 它提供了自動化構建的功能,您可以一旦原始碼倉庫發生更改就觸發構建。
  • 組織和團隊 − 透過建立組織和管理團隊的細粒度功能來啟用協作和訪問控制。
  • Webhooks − 這將允許webhooks,以便可以與外部服務和工具進行日常整合。

Red Hat Quay

Red Hat Quay是另一個流行的企業級容器登錄檔,它是一個安全且可擴充套件的平臺,可以儲存、分發和管理容器化映象。

主要功能

  • 安全性和合規性 − 它提供了一些強大的安全功能,包括漏洞掃描、映象簽名和基於角色的訪問控制。
  • 企業級可擴充套件性 − 專為高可用性和大規模容器部署的需求而設計。
  • 映象掃描和漏洞分析 − 透過與Clair整合,它支援全面的映象掃描和漏洞分析。
  • 地理複製 − 它支援地理複製,這有助於災難恢復並提高不同區域的效能。
  • 與Red Hat生態系統的整合 − 它可以輕鬆地與Red Hat生態系統中的其他產品和服務整合。

GitHub容器登錄檔

GitHub容器登錄檔是一個跨GitHub的完全整合的容器登錄檔,便於在靠近您的原始碼的地方儲存和共享容器映象。

主要功能

  • 與GitHub緊密整合 − 它可以幫助您輕鬆管理容器映象以及程式碼庫。
  • 對公共映象的匿名訪問 − 它允許匿名訪問公共映象,任何人都可以輕鬆訪問。
  • 細粒度許可權 − 提供細粒度許可權來精確管理誰可以訪問您的映象。
  • 自動化構建 − 只要您的程式碼在GitHub倉庫中發生更改,就會自動構建。
  • 熟悉的介面 − 一個類似於GitHub的熟悉介面來管理您的容器映象。

用於操作公共倉庫的Docker命令

Docker有很多命令可以用來操作公共倉庫。使用這些命令,您可以輕鬆地在命令列中建立、構建、拉取、標記和推送Docker映象到倉庫。由於Docker Hub是最常用的公共倉庫,我們將使用它來演示與倉庫互動的重要Docker命令。

建立Dockerfile

在構建映象之前,您需要建立一個Dockerfile,它本質上只是一個包含建立Docker映象的指令或步驟的文字檔案。

# Example Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html
CMD ["nginx", "-g", "daemon off;"]
Creating a Dockerfile

在這裡,我們從倉庫中拉取最新的已標記的Ubuntu映象,安裝nginx並更新作業系統,將html檔案複製到/var/www/html位置,並執行nginx命令。

構建Docker映象

您可以使用以下docker build命令從Dockerfile構建Docker映象。

$ docker build -t my-nginx-image 
Building the Docker Image

在上面的命令中,我們從當前位置(由末尾的點指定)的Dockerfile構建Docker映象。

建立Docker Hub賬戶

要操作和使用Docker Hub公共倉庫,您需要在Docker Hub建立一個賬戶。

登入Docker Hub

建立賬戶後,您需要透過命令列登入,然後才能將映象推送到Docker Hub。

$ docker login
Logging into Docker Hub

這將提示您驗證您的登入憑據。

標記Docker映象

標記Docker映象可以更容易地識別和管理多個版本的Docker映象。標記格式為使用者名稱/倉庫名:標記。

$ docker tag my-nginx-image myusername/my-nginx-image:latest
Tagging the Docker Image

在上面的命令中,我們已經用標記myusername/my-nginx-image:latest標記了我們的my-nginx-image。您可以使用“docker images”命令列出您本地現在所有的映象。

將Docker映象推送到Docker Hub

要將映象推送到Docker Hub,您可以使用docker push命令。

$ docker push myusername/my-nginx-image:latest
Pushing the Docker Image to Docker Hub

從Docker Hub拉取Docker映象

要從Docker Hub拉取映象,您可以使用docker pull命令。

$ docker pull myusername/my-nginx-image:latest
Pulling a Docker Image from Docker Hub

從映象執行Docker容器

如果要從已拉取的映象執行容器,可以使用docker run命令啟動一個來自該映象的容器。

$ docker run -d -p 80:80 myusername/my-nginx-image:latest
Running a Docker Container from the Image

上面的命令以分離模式執行Docker容器,並將Docker容器的80埠連線到主機機的80埠。這將允許您從本地瀏覽器訪問在容器中執行的nginx伺服器頁面。

列出Docker映象

為了列出您本地機器上的所有Docker映象,您可以使用docker images命令。

$ docker images
Listing Docker Images

刪除Docker映象

要從本地機器刪除Docker映象,可以使用docker rmi命令。

$ docker rmi myusername/my-nginx-image:latest
Removing Docker Images

我們可以將公共Docker倉庫用於生產應用程式嗎?

雖然公共Docker倉庫使用方便,並且擁有大量的映象選擇,但將其用於生產環境應用程式存在風險,因為它們可能包含未經測試或不安全的映象,這可能會使您的應用程式容易受到安全威脅。通常建議您在生產環境中自行構建和維護映象,並在適當測試後確保它們符合組織的安全標準。但是,在開發過程中搜索基礎映象或不同技術時,公共倉庫會很有用。

結論

本章討論瞭如何使用Docker公共倉庫。我們瞭解了建立、標記、拉取、推送和執行容器化應用程式的命令。我們還了解了流行的Docker公共倉庫以及每個倉庫提供的功能。本指南中概述的命令和流程提供了一個全面的框架,用於利用Docker的力量來促進容器化。

廣告