映像檔管理包含列出存放區中的映像檔、新增/刪除標記、複製映像檔至新存放區,以及刪除映像檔。
如要瞭解如何將本機映像檔推送至 Container Registry,或提取儲存在 Container Registry 中的映像檔,請參閱「推送及提取映像檔」。
事前準備
請確認下列事項:
已設定 Docker,以便向 Registry 進行驗證。
具備存取註冊資料庫的權限。
按照儲存空間位置列出映像檔
您可以使用Google Cloud console 或指令列來列出特定主機位置中的映像檔。
主控台
如要列出某一主機位置的映像檔:
前往「Container Registry」頁面。
使用「名稱」上方的選取器來選擇主機位置。相關選項有「所有位置」,以及專案目前使用的主機名稱,其中包含 gcr.io、us.gcr.io、eu.gcr.io 或 asia.gcr.io。
gcloud
如要列出其中一個主機位置中的映像檔,請使用下列指令:
gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]
其中:
[HOSTNAME]
列在控制台的Location
下,為以下四個選項的其中之一:gcr.io
、us.gcr.io
、eu.gcr.io
或asia.gcr.io
。[PROJECT-ID]
是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:
),請參閱網域範圍專案。
如果您有巢狀註冊資料庫,請指定儲存註冊資料庫的存放區層級,以列出巢狀映像檔:
gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]/[IMAGE]
其中 [IMAGE]
是含有更多巢狀映像檔的存放區。
另請參閱 gcloud container images list
說明文件。
列出映像檔版本
註冊資料庫可以擁有某個映像檔的不同版本。這些版本的映像檔名稱相同,並透過摘要和標記來做出區別。
主控台
如要查看映像檔的摘要和標記:
前往「Container Registry」頁面。
按一下圖片名稱,即可查看該圖片的版本。部分摘要會列在「名稱」底下,標記則列在「標記」底下。
如要取得完整摘要,請按一下映像檔的版本,即可查看版本的中繼資料。這類摘要稱為「映像檔摘要」。
gcloud
如要列出映像檔的部分摘要和標記,請執行下列指令:
gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]
其中:
[HOSTNAME]
列在控制台的Location
下,為以下四個選項的其中之一:gcr.io
、us.gcr.io
、eu.gcr.io
或asia.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 的託管映像檔加上標記:
前往「Container Registry」頁面。
按一下圖片名稱,即可查看該圖片的版本。
在「標記」底下,按一下編輯圖示。
在欄位中輸入新的標記,然後按一下 [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.io
、us.gcr.io
、eu.gcr.io
或asia.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 的映像檔中移除。
主控台
前往「Container Registry」頁面。
按一下圖片名稱,即可查看該圖片的版本。
在「標記」底下,按一下編輯圖示。
刪除標記,然後按一下 [SAVE] (儲存)。
gcloud
如要移除映像檔的標記,請使用下列指令:
gcloud container images untag [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
其中:
[HOSTNAME]
列在控制台的Location
下,為以下四個選項的其中之一:gcr.io
、us.gcr.io
、eu.gcr.io
或asia.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.io
、us.gcr.io
、eu.gcr.io
或asia.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 指令列刪除映像檔,請按照下列步驟操作:
主控台
前往「Container Registry」頁面。
按一下映像檔名稱,即可查看該映像檔的版本。
在註冊資料庫中,針對您要刪除的映像檔版本,勾選旁邊的方塊。
按一下頁面頂端的 [DELETE] (刪除)。
在「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.io
、us.gcr.io
、eu.gcr.io
或asia.gcr.io
。[PROJECT-ID]
是您的 Google Cloud 主控台專案 ID。如果您的專案 ID 包含冒號 (:
),請參閱網域範圍專案。[IMAGE]
是 Container Registry 中的映像檔名稱。[IMAGE_DIGEST]
是映像檔內容的 sha256 雜湊值。[TAG]
是您要移除的映像檔標記。
如要進一步瞭解這個指令,請參閱 gcloud container images delete
。