分享應用程式

現在您已建置映像檔,您可以分享它。 若要分享 Docker 映像檔,您必須使用 Docker 倉庫。 預設倉庫是 Docker Hub,也是您所使用所有映像檔的來源。

Docker ID

Docker ID 可讓您存取 Docker Hub,這是全球最大的容器映像檔庫和社群。 如果您沒有 Docker ID,請免費建立一個 Docker ID建立倉庫

若要推送映像檔,您首先需要在 Docker Hub 上建立一個倉庫。

  1. 註冊 或登入 Docker Hub

  2. 選擇「建立倉庫」按鈕。

  3. 倉庫名稱使用 getting-started。 確保「可見度」設定為「公開」。

  4. 選擇「建立」。

在下圖中,您可以看到 Docker Hub 中 Docker 命令的範例。 此命令將推送至這個倉庫。

Docker command with push example

推送映像檔

  1. 在命令列中,執行您在 Docker Hub 上看到的 docker push 命令。 請注意,您的命令將會使用您的 Docker ID,而不是「docker」。 例如,docker push 您的使用者名稱/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
    

    為什麼會失敗? push 命令正在尋找名為 docker/getting-started 的映像檔,但找不到。 如果您執行 docker image ls,您也不會看到它。

    若要解決此問題,您需要標記您已建置的現有映像檔,為其指定另一個名稱。

  2. 使用 docker login -u 您的使用者名稱 命令登入 Docker Hub。

  3. 使用 docker tag 命令為 getting-started 映像檔指定新的名稱。 將「您的使用者名稱」替換為您的 Docker ID。

    $ docker tag getting-started YOUR-USER-NAME/getting-started
    
  4. 現在再次執行 docker push 命令。 如果您是從 Docker Hub 複製該值,則可以捨棄 tagname 部分,因為您沒有在映像檔名稱中加入標記。 如果您沒有指定標記,Docker 會使用名為 latest 的標記。

    $ docker push YOUR-USER-NAME/getting-started
    

在新執行個體上執行映像檔

現在您的映像檔已建置並推送至倉庫,請嘗試在從未見過此容器映像檔的全新執行個體上執行您的應用程式。 為此,您將使用 Play with Docker。

**注意事項**

Play with Docker 使用 amd64 平台。 如果您使用的是搭載 Apple 晶片的 ARM 架構 Mac,您需要重建映像檔才能與 Play with Docker 相容,並將新的映像檔推送至您的倉庫。

若要建置適用於 amd64 平台的映像檔,請使用 --platform 旗標。

$ docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .

Docker buildx 也支援建置多平台映像檔。 若要深入瞭解,請參閱多平台映像檔

  1. 在瀏覽器中開啟 Play with Docker

  2. 選擇「登入」,然後從下拉式清單中選擇「docker」。

  3. 使用您的 Docker Hub 帳戶登入,然後選擇「開始」。

  4. 選擇左側欄上的「新增執行個體」選項。 如果您沒有看到它,請將瀏覽器視窗加寬一些。 幾秒鐘後,瀏覽器中會開啟一個終端機視窗。

    Play with Docker add new instance
  5. 在終端機中,啟動您剛推送的應用程式。

    $ 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 只會將容器的埠公開至迴路介面。 然而,繫結至 0.0.0.0 會將容器的埠公開至主機的所有介面,使其可供外部世界使用。

    有關埠映射運作方式的詳細資訊,請參閱網路

  6. 出現 3000 標記時選擇它。

    如果沒有出現 3000 標記,您可以選擇「開啟埠」並指定 3000

摘要

在本節中,您學習了如何透過將映像檔推送至倉庫來分享它們。 然後,您前往全新的執行個體,並能夠執行剛推送的映像檔。 這在 CI 管線中相當常見,管線會建立映像檔並將其推送至倉庫,然後生產環境可以使用最新版本的映像檔。

相關資訊

後續步驟

在下一節中,您將學習如何在容器化應用程式中保存資料。