共享應用程式

現在您已經構建了一個映象,您可以共享它。要共享 Docker 映象,您必須使用 Docker 登錄檔。預設登錄檔是 Docker Hub,您使用的所有映象都來自這裡。

Docker ID

Docker ID 允許您訪問 Docker Hub,它是全球最大的容器映象庫和社群。如果您還沒有,請免費建立一個 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 YOUR-USER-NAME/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
    

    為什麼它失敗了?推送命令正在查詢名為 docker/getting-started 的映象,但沒有找到。如果您執行 docker image ls,您也不會看到它。

    要解決此問題,您需要標記您已構建的現有映象以賦予其另一個名稱。

  2. 使用命令 docker login -u YOUR-USER-NAME 登入到 Docker Hub。

  3. 使用 docker tag 命令為 getting-started 映象賦予一個新名稱。將 YOUR-USER-NAME 替換為您的 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 管道中很常見,管道將建立映象並將其推送到登錄檔,然後生產環境可以使用最新版本的映象。

相關資訊

下一步

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