共享應用程式
現在您已經建構了一個映像檔,可以將其共享。要共享 Docker 映像檔,您必須使用 Docker 登錄庫 (Registry)。預設的登錄庫是 Docker Hub,這也是您目前使用過的所有映像檔的來源。
Docker ID
Docker ID 讓您可以存取 Docker Hub,這是全球最大的容器映像檔庫與社群。如果您還沒有 Docker ID,請免費建立一個 Docker ID。
建立儲存庫
要推送映像檔,您首先需要在 Docker Hub 上建立一個儲存庫 (Repository)。
註冊 或登入 Docker Hub。
選擇 Create Repository 按鈕。
儲存庫名稱請使用
getting-started。確保 Visibility 設定為 Public(公開)。選取「建立」。
在下圖中,您可以看到來自 Docker Hub 的一個 Docker 指令範例。此指令將會把映像檔推送至該儲存庫。

推送映像檔
讓我們嘗試將映像檔推送至 Docker Hub。
在命令列中,執行以下指令
docker push docker/getting-started您將會看到類似這樣的錯誤
$ docker push docker/getting-started The push refers to repository [docker.io/docker/getting-started] An image does not exist locally with the tag: docker/getting-started這個失敗是預期之中的,因為該映像檔尚未正確標記 (Tag)。Docker 正在尋找名稱為
docker/getting-started的映像檔,但您本機的映像檔名稱仍為getting-started。您可以透過執行以下指令來確認:
docker image ls要解決此問題,請先使用您的 Docker ID 登入 Docker Hub:
docker login YOUR-USER-NAME。使用
docker tag指令為getting-started映像檔賦予一個新名稱。請將YOUR-USER-NAME替換為您的 Docker ID。$ docker tag getting-started YOUR-USER-NAME/getting-started現在再次執行
docker push指令。如果您是從 Docker Hub 複製數值,可以省略tagname部分,因為您沒有為映像檔名稱新增標籤。如果您沒有指定標籤,Docker 會使用名為latest的標籤。$ docker push YOUR-USER-NAME/getting-started
在新執行個體上執行映像檔
現在您的映像檔已經建構並推送到了登錄庫中,請嘗試在一個從未見過此容器映像檔的全新執行個體上執行您的應用程式。為此,您將使用 Play with Docker。
注意Play with Docker 使用 amd64 平台。如果您使用的是基於 ARM 架構並搭載 Apple Silicon 的 Mac,您將需要重新建構該映像檔以與 Play with Docker 相容,並將新映像檔推送至您的儲存庫。
要為 amd64 平台建構映像檔,請使用
--platform旗標。$ docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .Docker buildx 也支援建構多平台映像檔。若要了解更多資訊,請參閱 多平台映像檔。
在瀏覽器中開啟 Play with Docker。
選擇 Login,然後從下拉式選單中選擇 docker。
使用您的 Docker Hub 帳號登入,然後選擇 Start。
選擇左側側邊欄上的 ADD NEW INSTANCE 選項。如果您沒看到該選項,請將瀏覽器視窗稍微拉寬一點。幾秒鐘後,瀏覽器中會開啟一個終端機視窗。

在終端機中,啟動您剛推送的應用程式。
$ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started您應該會看到映像檔被下載並最終啟動。
提示您可能已經注意到,此指令將連接埠映射綁定到了不同的 IP 位址。之前的
docker run指令將連接埠發佈到主機上的127.0.0.1:3000。這一次,您使用的是0.0.0.0。綁定到
127.0.0.1只會將容器的連接埠暴露給 loopback 介面。然而,綁定到0.0.0.0會將容器的連接埠暴露給主機的所有介面,使其對外開放。關於連接埠映射如何運作的更多資訊,請參閱 網路 (Networking)。
當 3000 徽章出現時,點擊它。
如果沒有出現 3000 徽章,您可以選擇 Open Port 並指定
3000。
總結
在本節中,您學習了如何透過將映像檔推送到登錄庫來共享它們。隨後,您進入了一個全新的執行個體,並成功執行了剛推送的映像檔。這在 CI 管線 (Pipeline) 中非常常見,管線會建立映像檔並將其推送至登錄庫,然後生產環境即可使用該映像檔的最新版本。
相關資訊
下一步
在下一節中,您將學習如何在容器化應用程式中保存資料。
保存資料庫 (Persist the DB)