構建並推送您的第一個映象
系列 入門說明
既然您已經更新了待辦事項應用程式,您就可以為該應用程式建立容器映象並將其共享到 Docker Hub 上。為此,您需要執行以下操作:
- 使用您的 Docker 帳戶登入
- 在 Docker Hub 上建立一個映象倉庫
- 構建容器映象
- 將映象推送到 Docker Hub
在您深入實踐指南之前,以下是一些您應該瞭解的核心概念。
容器映象
如果您不熟悉容器映象,可以將它們視為包含執行應用程式所需的所有內容的標準化包,包括其檔案、配置和依賴項。然後可以將這些包分發並與他人共享。
Docker Hub
要共享您的 Docker 映象,您需要一個儲存它們的地方。這就是倉庫的作用。雖然存在許多倉庫,但 Docker Hub 是預設的也是映象的首選倉庫。Docker Hub 為您提供了一個儲存您自己的映象和查詢其他人的映象以執行或用作您自己的映象基礎的地方。
在使用容器開發中,您使用了以下來自 Docker Hub 的映象,每個映象都是Docker 官方映象
- node - 提供 Node 環境,並用作您的開發工作的基礎。此映象也用作最終應用程式映象的基礎。
- mysql - 提供 MySQL 資料庫來儲存待辦事項
- phpmyadmin - 提供 phpMyAdmin,這是一個用於 MySQL 資料庫的基於 Web 的介面
- traefik - 提供 Traefik,這是一種現代 HTTP 反向代理和負載均衡器,它根據路由規則將請求路由到相應的容器
探索Docker 官方映象 的完整目錄,以檢視更多可執行和構建的內容。
試一試
在本實踐指南中,您將學習如何登入 Docker Hub 並將映象推送到 Docker Hub 倉庫。
使用您的 Docker 帳戶登入
要將映象推送到 Docker Hub,您需要使用 Docker 帳戶登入。
開啟 Docker 儀表板。
選擇右上角的**登入**。
如果需要,建立一個帳戶,然後完成登入流程。
完成登入後,您應該看到**登入**按鈕變成個人資料圖片。
建立映象倉庫
現在您有了帳戶,就可以建立映象倉庫了。就像 Git 倉庫儲存原始碼一樣,映象倉庫儲存容器映象。
轉到Docker Hub。
選擇**建立倉庫**。
在**建立倉庫**頁面上,輸入以下資訊:
- **倉庫名稱** -
getting-started-todo-app
- **簡短描述** - 您可以隨意輸入描述
- **可見性** - 選擇**公開**以允許其他人拉取您的自定義待辦事項應用程式
- **倉庫名稱** -
選擇**建立**以建立倉庫。
構建並推送映象
現在您有了倉庫,就可以構建並推送映象了。需要注意的是,您要構建的映象擴充套件了 Node 映象,這意味著您不需要安裝或配置 Node、yarn 等。您只需專注於使您的應用程式獨一無二的部分。
什麼是映象/Dockerfile?
不要太深入,可以將容器映象視為包含執行程序所需所有內容的單個包。在這種情況下,它將包含 Node 環境、後端程式碼和編譯的 React 程式碼。
任何使用該映象執行容器的機器,都將能夠執行應用程式,就像它構建時一樣,而無需在機器上預先安裝任何其他內容。
Dockerfile
是一個基於文字的指令碼,它提供如何構建映象的指令集。為了快速入門,該倉庫已經包含了 Dockerfile。
要開始,請克隆或下載專案作為 ZIP 檔案 到您的本地機器。
$ git clone https://github.com/docker/getting-started-todo-app
克隆專案後,導航到克隆建立的新目錄。
$ cd getting-started-todo-app
執行以下命令構建專案,將
DOCKER_USERNAME
替換為您的使用者名稱。$ docker build -t <DOCKER_USERNAME>/getting-started-todo-app .
例如,如果您的 Docker 使用者名稱為
mobydock
,您將執行以下命令$ docker build -t mobydock/getting-started-todo-app .
要驗證映像是否在本地存在,可以使用
docker image ls
命令$ docker image ls
您將看到類似於以下內容的輸出
REPOSITORY TAG IMAGE ID CREATED SIZE mobydock/getting-started-todo-app latest 1543656c9290 2 minutes ago 1.12GB ...
要推送映像,請使用
docker push
命令。請務必將DOCKER_USERNAME
替換為您的使用者名稱$ docker push <DOCKER_USERNAME>/getting-started-todo-app
根據您的上傳速度,這可能需要一段時間才能推送。
開啟 Visual Studio Code。在檔案選單中,選擇開啟資料夾。選擇克隆 Git 儲存庫並貼上此 URL:https://github.com/docker/getting-started-todo-app
右鍵單擊
Dockerfile
並選擇構建映像...選單項。在出現的對話方塊中,輸入
DOCKER_USERNAME/getting-started-todo-app
的名稱,將DOCKER_USERNAME
替換為您的 Docker 使用者名稱。按下Enter後,您將看到一個終端出現,構建將在其中進行。完成後,您可以關閉終端。
透過選擇左側導航選單中的 Docker 徽標,開啟 VS Code 的 Docker 擴充套件。
找到您建立的映像。它的名稱將是
docker.io/DOCKER_USERNAME/getting-started-todo-app
。展開映像以檢視映像的標籤(或不同版本)。您應該看到一個名為
latest
的標籤,它是賦予映像的預設標籤。右鍵單擊latest項並選擇推送...選項。
按下Enter確認,然後觀看您的映像被推送到 Docker Hub。根據您的上傳速度,推送映像可能需要一段時間。
上傳完成後,您可以關閉終端。
回顧
在繼續之前,花點時間思考一下這裡發生了什麼。在短短幾分鐘內,您就能夠構建一個容器映像,該映像打包您的應用程式並將其推送到 Docker Hub。
展望未來,您需要記住
Docker Hub 是查詢可信內容的首選登錄檔。Docker 提供了一個可信內容集合,由 Docker 官方映像、Docker 經過驗證的釋出者和 Docker 贊助的開源軟體組成,可以直接使用或作為您自己映像的基礎。
Docker Hub 提供了一個市場來分發您自己的應用程式。任何人都可以建立帳戶並分發映像。雖然您正在公開分發您建立的映像,但私有儲存庫可以確保您的映像僅對授權使用者可見。
其他登錄檔的使用
雖然 Docker Hub 是預設登錄檔,但登錄檔已透過Open Container Initiative 標準化並透過互操作性。這使公司和組織能夠執行他們自己的私有登錄檔。通常,可信內容會從 Docker Hub 映象(或複製)到這些私有登錄檔中。
下一步
現在您已經構建了一個映像,是時候討論為什麼您作為開發人員應該瞭解有關 Docker 的更多資訊,以及它將如何幫助您完成日常任務。