構建並推送您的第一個映象
解釋
現在您已經更新了待辦事項列表應用,您可以為該應用建立一個容器映象並將其分享到 Docker Hub 上。為此,您需要執行以下操作:
- 使用您的 Docker 賬戶登入
- 在 Docker Hub 上建立一個映象倉庫
- 構建容器映象
- 將映象推送到 Docker Hub
在您開始實踐指南之前,您應該瞭解以下幾個核心概念。
容器映象
如果您是容器映象的新手,可以將其視為一個標準化的包,其中包含執行應用程式所需的一切,包括其檔案、配置和依賴項。這些包可以分發並與他人共享。
Docker Hub
要共享您的 Docker 映象,您需要一個地方來儲存它們。這就是註冊中心(registries)的作用。雖然有許多註冊中心,但 Docker Hub 是預設和首選的映象註冊中心。Docker Hub 不僅為您提供儲存自己映象的地方,還讓您能找到他人的映象,以便直接執行或作為自己映象的基礎。
在使用容器進行開發中,您使用了以下來自 Docker Hub 的映象,它們都是Docker 官方映象:
- node - 提供一個 Node 環境,並用作您開發工作的基礎。該映象也用作最終應用程式映象的基礎。
- mysql - 提供一個 MySQL 資料庫來儲存待辦事項列表項
- phpmyadmin - 提供 phpMyAdmin,一個用於 MySQL 資料庫的基於 Web 的介面
- traefik - 提供 Traefik,一個現代化的 HTTP 反向代理和負載均衡器,可根據路由規則將請求路由到適當的容器
探索Docker 官方映象、Docker 認證釋出者和Docker 贊助的開源軟體映象的完整目錄,以瞭解更多可以執行和構建的內容。
試一試
在這個實踐指南中,您將學習如何登入 Docker Hub 並將映象推送到 Docker Hub 倉庫。
使用您的 Docker 賬戶登入
要將映象推送到 Docker Hub,您需要使用 Docker 賬戶登入。
開啟 Docker Dashboard。
選擇右上角的登入。
如果需要,請建立一個賬戶,然後完成登入流程。
完成後,您應該會看到登入按鈕變成一個個人資料圖片。
建立一個映象倉庫
現在您有了一個賬戶,可以建立一個映象倉庫。就像 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。確保您已從擴充套件市場安裝了Docker VS Code 擴充套件。
在檔案選單中,選擇開啟資料夾。選擇克隆 Git 倉庫並貼上此 URL:https://github.com/docker/getting-started-todo-app
右鍵單擊
Dockerfile
並選擇構建映象... 選單項。在出現的對話方塊中,輸入名稱
DOCKER_USERNAME/getting-started-todo-app
,並將DOCKER_USERNAME
替換為您的 Docker 使用者名稱。按回車後,您會看到一個終端出現,構建將在其中進行。完成後,可以隨意關閉終端。
透過選擇左側導航選單中的 Docker 徽標開啟 VS Code 的 Docker 擴充套件。
找到您建立的映象。它的名稱將是
docker.io/DOCKER_USERNAME/getting-started-todo-app
。展開映象以檢視映象的標籤(或不同版本)。您應該會看到一個名為
latest
的標籤,這是給映象的預設標籤。右鍵單擊 latest 項並選擇 Push... 選項。
按回車確認,然後觀看您的映象被推送到 Docker Hub。根據您的上傳速度,推送映象可能需要一些時間。
上傳完成後,您可以關閉終端。
回顧
在繼續之前,花點時間回顧一下這裡發生的事情。在短短幾分鐘內,您就能夠構建一個打包了您的應用程式的容器映象,並將其推送到 Docker Hub。
展望未來,您需要記住的是
Docker Hub 是尋找可信內容的首選註冊中心。Docker 提供了一系列可信內容,包括 Docker 官方映象、Docker 認證釋出者和 Docker 贊助的開源軟體,可以直接使用或作為您自己映象的基礎。
Docker Hub 提供了一個分發您自己應用程式的市場。任何人都可以建立一個賬戶並分發映象。雖然您公開分發了您建立的映象,但私有倉庫可以確保您的映象只能被授權使用者訪問。
其他註冊中心的使用
雖然 Docker Hub 是預設的註冊中心,但註冊中心透過開放容器倡議(Open Container Initiative)實現了標準化和互操作性。這使得公司和組織可以執行自己的私有註冊中心。通常,可信內容會從 Docker Hub 映象(或複製)到這些私有註冊中心。
後續步驟
既然您已經構建了一個映象,現在是時候討論一下為什麼您作為一名開發人員應該更多地瞭解 Docker,以及它將如何在您的日常工作中幫助您。
下一步是什麼