共享應用程式
現在你已經構建了一個映象,你可以共享它。要共享 Docker 映象,你必須使用 Docker registry。預設的 registry 是 Docker Hub,你使用過的所有映象都來自這裡。
Docker ID
Docker ID 讓你能夠訪問 Docker Hub,這是全球最大的容器映象庫和社群。如果你還沒有 Docker ID,可以免費建立一個 Docker ID。
建立一個倉庫
要推送一個映象,你首先需要在 Docker Hub 上建立一個倉庫。
註冊或登入到 Docker Hub。
選擇 Create Repository 按鈕。
對於倉庫名稱,使用
getting-started
。確保 Visibility(可見性)是 Public(公開)。選擇 Create (建立)。
在下圖中,你可以看到一個來自 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
這個失敗是預期的,因為映象還沒有被正確地標記。Docker 正在尋找一個名為
docker/getting-started
的映象,但你的本地映象仍然名為getting-started
。你可以透過執行以下命令來確認
docker image ls
要解決這個問題,首先使用你的 Docker ID 登入到 Docker Hub:
docker login YOUR-USER-NAME
。使用
docker tag
命令給getting-started
映象一個新名稱。用你的 Docker ID 替換YOUR-USER-NAME
。$ docker tag getting-started YOUR-USER-NAME/getting-started
現在再次執行
docker push
命令。如果你是從 Docker Hub 複製的值,可以去掉tagname
部分,因為你沒有給映象名稱新增標籤。如果你不指定標籤,Docker 會使用一個名為latest
的標籤。$ docker push YOUR-USER-NAME/getting-started
在新例項上執行映象
現在你的映象已經構建並推送到一個 registry 中,嘗試在一個全新的、從未見過此容器映象的例項上執行你的應用程式。為此,你將使用 Play with Docker。
注意Play with Docker 使用 amd64 平臺。如果你使用的是帶有 Apple silicon 的基於 ARM 的 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
只會將容器的埠暴露給環回介面。然而,繫結到0.0.0.0
會將容器的埠暴露在主機的所有介面上,使其對外部世界可用。有關埠對映如何工作的更多資訊,請參閱網路。
當 3000 徽章出現時,選擇它。
如果 3000 徽章沒有出現,你可以選擇 Open Port 並指定
3000
。
摘要
在本節中,你學習瞭如何透過將映象推送到 registry 來共享你的映象。然後,你到了一個全新的例項上,並能夠執行剛剛推送的映象。這在 CI 管道中很常見,管道會建立映象並將其推送到 registry,然後生產環境可以使用最新版本的映象。
相關資訊
後續步驟
在下一節中,你將學習如何在容器化應用程式中持久化資料。
持久化資料庫