建置、標記和發佈映像檔

說明

在本指南中,您將學習以下內容

  • 建置映像檔 - 根據 Dockerfile 建置映像檔的過程
  • 標記映像檔 - 為映像檔命名,這也決定了映像檔可以發佈到哪裡
  • 發佈映像檔 - 使用容器倉庫發佈或分享新建立映像檔的過程

建置映像檔

映像檔通常使用 Dockerfile 建置。最基本的 docker build 指令可能如下所示

docker build .

指令最後的 . 提供了建置上下文

使用先前的輸出,您可以使用參考的映像檔來啟動容器

這個名稱肯定不容易記住,這就是標記派上用場的地方。

標記映像檔

標記映像檔是一種為映像檔提供易記名稱的方法。然而,映像檔的名稱有一定的結構。完整的映像檔名稱具有以下結構

[HOST[:PORT_NUMBER]/]PATH[:TAG]

映像檔名稱的一些範例包括

要在建置期間標記映像檔,請新增 -t--tag 旗標

docker build -t my-username/my-image .

如果您已經建置了映像檔,您可以使用 docker image tag

發佈映像檔

建置並標記映像檔後,您就可以將它推送至倉庫。您可以使用 docker push

docker push my-username/my-image

幾秒鐘內,映像檔的所有層都將被推送至倉庫。

需要驗證

您必須先通過驗證,才能將映像檔推送至倉庫。只需使用 docker login試用看看

在本實作指南中,您將使用提供的 Dockerfile 建置一個簡單的映像檔,並將其推送至 Docker Hub。

設定

  1. 取得範例應用程式。

    如果您有 Git,您可以複製範例應用程式的倉庫。否則,您可以下載範例應用程式。請選擇下列其中一個選項。


    在終端機中使用以下指令來複製範例應用程式倉庫。

    $ git clone https://github.com/docker/getting-started-todo-app
    

    下載原始碼並解壓縮。


  2. 下載並安裝立即建立一個建置映像檔

    現在您在 Docker Hub 上擁有一個儲存庫,接下來您可以建置映像並將其推送至儲存庫。

    1. 在範例應用程式儲存庫的根目錄中使用終端機,執行以下指令。將 YOUR_DOCKER_USERNAME 替換為您的 Docker Hub 使用者名稱。

      例如,如果您的使用者名稱是 mobywhale,您應該執行以下指令:

    2. 建置完成後,您可以使用以下指令檢視映像:

      該指令將產生類似以下的輸出:

    3. 您實際上可以使用 docker image history 指令檢視歷史記錄(或映像是如何建立的)。

      $ docker image history mobywhale/concepts-build-image-demo
      

      然後您會看到類似以下的輸出:

      IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
      f279389d5f01   8 seconds ago   CMD ["node" "./src/index.js"]                   0B        buildkit.dockerfile.v0
      <missing>      8 seconds ago   EXPOSE map[3000/tcp:{}]                         0B        buildkit.dockerfile.v0 
      <missing>      8 seconds ago   WORKDIR /app                                    8.19kB    buildkit.dockerfile.v0
      <missing>      4 days ago      /bin/sh -c #(nop)  CMD ["node"]                 0B
      <missing>      4 days ago      /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
      <missing>      4 days ago      /bin/sh -c #(nop) COPY file:4d192565a7220e13…   20.5kB
      <missing>      4 days ago      /bin/sh -c apk add --no-cache --virtual .bui…   7.92MB
      <missing>      4 days ago      /bin/sh -c #(nop)  ENV YARN_VERSION=1.22.19     0B
      <missing>      4 days ago      /bin/sh -c addgroup -g 1000 node     && addu…   126MB
      <missing>      4 days ago      /bin/sh -c #(nop)  ENV NODE_VERSION=20.12.0     0B
      <missing>      2 months ago    /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
      <missing>      2 months ago    /bin/sh -c #(nop) ADD file:d0764a717d1e9d0af…   8.42MB

      此輸出顯示映像的層級,突顯您新增的層級以及從基礎映像繼承的層級。

    推送映像檔

    現在您已建置好映像,接下來要將映像推送至儲存庫。

    1. 使用 docker push 指令推送映像。

      $ docker push <YOUR_DOCKER_USERNAME>/concepts-build-image-demo
      

      如果您收到 requested access to the resource is denied(拒絕存取資源的請求)錯誤訊息,請確認您已登入,且您的 Docker 使用者名稱在映像標籤中正確無誤。

      稍後片刻,您的映像就會被推送至 Docker Hub。

    其他資源

    若要深入瞭解建置、標記和發佈映像,請瀏覽以下資源:

    後續步驟

    現在您已瞭解如何建置和發佈映像,接下來將學習如何使用 Docker 建置快取來加速建置流程。