管理映像檔

映像檔管理包含列出存放區中的映像檔、新增/刪除標記、複製映像檔至新存放區,以及刪除映像檔。

如要瞭解如何將本機映像檔推送至 Container Registry,或提取儲存在 Container Registry 中的映像檔,請參閱「推送及提取映像檔」。

事前準備

請確認下列事項:

  1. 在專案中啟用 Container Registry

  2. 安裝 Docker

  3. 已設定 Docker,以便向 Registry 進行驗證。

  4. 具備存取註冊資料庫的權限

按照儲存空間位置列出映像檔

您可以使用Google Cloud console 或指令列來列出特定主機位置中的映像檔。

主控台

如要列出某一主機位置的映像檔:

  1. 前往「Container Registry」頁面。

    開啟「Container Registry」頁面

  2. 使用「名稱」上方的選取器來選擇主機位置。相關選項有「所有位置」,以及專案目前使用的主機名稱,其中包含 gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io

gcloud

如要列出其中一個主機位置中的映像檔,請使用下列指令:

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]

其中:

  • [HOSTNAME] 列在控制台的 Location 下,為以下四個選項的其中之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:),請參閱網域範圍專案

如果您有巢狀註冊資料庫,請指定儲存註冊資料庫的存放區層級,以列出巢狀映像檔:

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]/[IMAGE]

其中 [IMAGE] 是含有更多巢狀映像檔的存放區。

另請參閱 gcloud container images list 說明文件。

列出映像檔版本

註冊資料庫可以擁有某個映像檔的不同版本。這些版本的映像檔名稱相同,並透過摘要和標記來做出區別。

主控台

如要查看映像檔的摘要和標記:

  1. 前往「Container Registry」頁面。

    開啟「Container Registry」頁面

  2. 按一下圖片名稱,即可查看該圖片的版本。部分摘要會列在「名稱」底下,標記則列在「標記」底下。

  3. 如要取得完整摘要,請按一下映像檔的版本,即可查看版本的中繼資料。這類摘要稱為「映像檔摘要」

gcloud

如要列出映像檔的部分摘要和標記,請執行下列指令:

gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]

其中:

  • [HOSTNAME] 列在控制台的 Location 下,為以下四個選項的其中之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:),請參閱網域範圍專案
  • [IMAGE] 是 Container Registry 中的映像檔名稱。

如要列出特定映像檔版本的完整摘要,請執行下列指令:

gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]

請參閱 gcloud container images list-tags 說明文件。

為映像檔加上標記

您可以使用 Google Cloud console 或指令列,為圖片新增標記。

摘要是系統自動產生的圖片版本專屬 ID。標記可視為標籤,可套用至特定的映像檔版本。

您可以在圖片中加入多個標記。在儲存庫中,每個圖片的標記都必須不重複。舉例來說,如果您將標記 release-candidate 新增至第九個圖片版本,將相同標記新增至第十個版本,系統就會將標記從第九個版本移至第十個版本。

如果您未為映像檔加上標記,Docker 用戶端會新增預設標記 latest。也就是說,latest 不會指出圖片的最新版本。而是指您特別標示為 latest 的圖片版本,或是最新的未標記圖片版本。由於 latest 的意思不明確,建議您不要依賴 latest 代碼。

主控台

如要為 Container Registry 的託管映像檔加上標記:

  1. 前往「Container Registry」頁面。

    開啟「Container Registry」頁面

  2. 按一下圖片名稱,即可查看該圖片的版本。

  3. 在「標記」底下,按一下編輯圖示。

  4. 在欄位中輸入新的標記,然後按一下 [SAVE] (儲存)

gcloud

如要為 Container Registry 的託管映像檔加上標記,請使用 gcloud container images add-tag 指令:

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

其中:

  • [HOSTNAME] 列在控制台的 Location 下,為以下四個選項的其中之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:),請參閱網域範圍專案
  • [IMAGE] 是 Container Registry 中的映像檔名稱。
  • [TAG] 是已套用至映像檔的標記。
  • [IMAGE_DIGEST] 是映像檔內容的 sha256 雜湊值。
  • [NEW_TAG] 是您要加入映像檔的新標記。

如要進一步瞭解這項指令,請參閱 gcloud container images add-tag

為本機映像檔加上標記以託管在 Container Registry 上

如要將任何本機映像檔推送到 Container Registry,您必須先為映像檔加上註冊資料庫名稱的標記,接著再推送映像檔。如需相關操作說明,請參閱將映像檔推送至註冊資料庫

取消映像檔的標記

您可以使用Google Cloud console 或指令列,將標記從 Container Registry 的映像檔中移除。

主控台

  1. 前往「Container Registry」頁面。

    開啟「Container Registry」頁面

  2. 按一下圖片名稱,即可查看該圖片的版本。

  3. 在「標記」底下,按一下編輯圖示。

  4. 刪除標記,然後按一下 [SAVE] (儲存)

gcloud

如要移除映像檔的標記,請使用下列指令:

gcloud container images untag [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

其中:

  • [HOSTNAME] 列在控制台的 Location 下,為以下四個選項的其中之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:),請參閱網域範圍專案
  • [IMAGE] 是 Container Registry 中的映像檔名稱。
  • [TAG] 是您要移除的標記。

    如要進一步瞭解這項指令,請參閱 gcloud container images untag

將映像檔複製到新註冊資料庫

您可以使用指令列將映像檔從某個存放區複製到另一個存放區。您必須同時具備這兩個存放區的存取權。

如要將映像檔從某個存放區複製到另一個存放區,請使用 gcloud container images add-tag 指令,並透過標記來識別要移除的映像檔:

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]:[SOURCE_TAG] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

或透過摘要:

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]@[IMAGE_DIGEST] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

針對來源和目標的欄位,其中:

  • [HOSTNAME] 是託管圖片的位置,為以下四個選項的其中之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:),請參閱網域範圍專案
  • [IMAGE] 是 Container Registry 中的映像檔名稱。
  • [IMAGE_DIGEST] 是映像檔內容的 sha256 雜湊值。
  • [TAG] 是用來識別要移動的來源映像檔的標記,或是套用到目標存放區中映像檔的標記。

例如,如果您要將 my-image 圖片複製到另一個專案的存放區和歐洲的主機,但想要保留相同的圖片名稱和標記,則可使用下列指令:

gcloud container images add-tag \
gcr.io/[PROJECT-ID]/my-image:tag1 \
eu.gcr.io/[OTHER-PROJECT-ID]/my-image:tag1

其中 [PROJECT-ID][OTHER-PROJECT-ID] 是複製作業的來源專案和目標專案在 Google Cloud 主控台專案 ID。您必須具備這兩個專案中存放區的存取權。如果有任何一個專案 ID 包含冒號 (:),請參閱網域範圍專案

如要進一步瞭解這項指令,請參閱 gcloud container images add-tag

刪除映像檔

您可以使用 Google Cloud console 或指令列刪除映像檔。圖片一經刪除,即無法復原。

您可以使用其他工具管理未使用的圖片。舉例來說,gcr-cleaner 工具會根據不同的條件找出並刪除舊圖片。移除未使用的圖片有助於降低儲存空間費用。gcr-cleaner 工具並非 Google 官方產品。

如要從 Google Cloud 控制台或 gcloud 指令列刪除映像檔,請按照下列步驟操作:

主控台

  1. 前往「Container Registry」頁面。

    開啟「Container Registry」頁面

  2. 按一下映像檔名稱,即可查看該映像檔的版本。

  3. 在註冊資料庫中,針對您要刪除的映像檔版本,勾選旁邊的方塊。

  4. 按一下頁面頂端的 [DELETE] (刪除)

  5. 在「Delete repository items」(刪除存放區項目) 彈出式視窗中,按一下 [DELETE] (刪除)

gcloud

執行下列其中一個指令:

  • 使用摘要識別映像檔:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
    
  • 使用標記識別具有多個標記的映像檔:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] --force-delete-tags
    

其中:

  • [HOSTNAME] 列在控制台的 Location 下,為以下四個選項的其中之一:gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io
  • [PROJECT-ID] 是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:),請參閱網域範圍專案
  • [IMAGE] 是 Container Registry 中的映像檔名稱。
  • [IMAGE_DIGEST] 是映像檔內容的 sha256 雜湊值。
  • [TAG] 是您要移除的映像檔標記。

如要進一步瞭解這個指令,請參閱 gcloud container images delete

後續步驟