存取儲存器登錄

IBM Cloud® Code Engine 使用的影像通常儲存在一個註冊表中,該註冊表可供公眾存取(公開註冊表),也可設定為只限一小群使用者存取(私人註冊表)。

儲存器登錄或登錄是儲存儲存器映像檔的服務。 例如,IBM Cloud Container Registry 和 Docker Hub 是儲存器登錄。 容器登錄可以是公用或專用。 公用儲存器登錄不需要認證即可存取。 相反地,存取專用登錄則需要認證。

Code Engine 需要存取儲存器登錄才能完成下列動作:

  • 擷取 (或「取回」) 容器映像檔以執行應用程式或工作
  • 將新建立的容器映像檔儲存為映像檔建置的輸出
  • 當從本端來源執行建置時,儲存及擷取本端檔案

Code Engine 會處理系統與登錄之間互動的許多基礎詳細資料。

若要從登錄取回映像檔,Code Engine 會使用特殊類型的 Kubernetes 密鑰 (稱為 imagePullSecret)。 此映像檔取回密碼會儲存用來存取容器登錄的認證。 當您使用 Code Engine 來新增儲存器登錄的存取權以取回映像檔時,您正在建立映像檔取回密鑰。 如需映像檔取回密碼的相關資訊,請參閱 Kubernetes 文件

映像檔登錄類型

映像檔通常會儲存在登錄中,而該登錄可供公開存取(公用登錄)或已設定一小組使用者的有限存取(專用登錄)。

公用登錄 (例如公用 Docker Hub) 可用來開始使用 Docker 及 Code Engine,以建立您的第一個應用程式或工作。 但當涉及企業工作負載時,請使用私人註冊表,例如 IBM Cloud Container Registry 中提供的註冊表,以保護您的影像不被未經授權的使用者使用。 對於專用登錄,請使用登錄密鑰來確保認證可用來取得專用登錄的存取權。

公有和私有影像註冊表類型
登錄 說明
IBM Cloud Container Registry 使用這種類型的登錄,您可以在 IBM Cloud Container Registry 中設定您自己的安全映像檔儲存庫,您可以在其中安全地儲存並在使用者之間共用映像檔。
使用 IBM Cloud Container Registry,您可以
-管理帳戶中映像檔的存取權。
-使用 IBM 提供的映像檔及範例應用程式 (例如 IBM Liberty) 作為基本映像檔,並將您自己的應用程式碼新增至其中。
任何其他專用登錄

透過新增存取權,將任何現有專用登錄連接至 Code Engine。 新增存取權可安全地將您的註冊表 URL 及憑證儲存於 Kubernetes 秘書中。
使用私有註冊紀錄,您可以

  • 使用現有的私有註冊資料庫,不論其來源為何 ( Docker Hub、組織擁有的註冊資料庫或其他私有雲註冊資料庫)。
公用 Docker Hub

使用這種類型的註冊表直接在您的Code Engine應用程式或作業中從Docker Hub 提取現有公共映像。

重要的:

  • 此註冊表類型可能不符合您組織的安全要求,例如存取管理、漏洞掃描或應用程式隱私。
  • 當您從 Docker Hub 中提取映像以用於 Code Engine 中的應用程式或作業時,請注意免費計劃(未經身份驗證的)使用者的 Docker 速率限制。 如果您收到 429 錯誤,表示您已達到拉取速率限制,您可能會遇到拉取限制。 若要提高費率限額 ,您可以將帳戶升級為 Docker ProTeam 訂閱。

使用公共Docker Hub,您可以:

  • 當您建立應用程式或作業時可以直接引用這些映像,無需額外設定。
  • 包括各種開源應用程式。

登錄密鑰類型

若要存取登錄中的映像檔,Code Engine 會使用下列其中一種登錄密鑰類型。

  • Code Engine 受管理密鑰-如果您的登錄使用帳戶中的 IBM Cloud Container Registry 名稱空間,則可以讓 Code Engine 為您建立並管理登錄密鑰。 在主控台中,這個自動建立的登錄密鑰稱為 Code Engine managed secret。 在 CLI 中,自動建立的登錄密鑰名稱格式為 ce-auto-icr-private-<region>
  • 使用者管理的密鑰-這是您建立及管理的密鑰。 您可以 使用 API 金鑰從帳戶存取映像檔,或使用您選擇之容器登錄的存取記號; 例如,Docker Hub。 在此情況下,主控台中列出的登錄密鑰是登錄密鑰的名稱。

如果您的登錄是公用且不需要認證; 例如,icr.io/codeengine 或 Docker Hub 公用中的 Code Engine 範例映像檔,則您不需要登錄密鑰。 在此情況下,主控台中列出的登錄密鑰為 None

設定映像檔登錄的權限

如果您的登錄是公用的,則不需要設定取回映像檔的權限。 請注意,在您開始使用 Code Engine 時從公用登錄取回映像檔是可接受的。 當涉及企業工作負載時,請使用專用登錄。

我需要什麼權限?

若要判定您需要的權限,請考量下列情況:

  • 當您部署應用程式或執行工作時,Code Engine 可以自動存取您自己帳戶中的映像檔。

  • 如果您想要從共用帳戶、其他 IBM Cloud 帳戶或專用 Docker 帳戶存取映像檔,您必須獲指派適當的存取權。

  • 當您部署應用程式或執行工作且登錄使用帳戶中的 IBM Cloud Container Registry 名稱空間時,您可以讓 Code Engine 自動為您建立及管理登錄密碼,只要您的帳戶具有下表中說明的必要許可權即可。

    • 在主控台中,此登錄密鑰稱為 Code Engine managed secret。 當您使用 配置映像檔指定建置詳細資料 工作流程,以使用 Code Engine來建置映像檔時,可以使用此選項。
    • 在 CLI 中,此登錄密碼的格式為 ce-auto-icr-private-<region>。 當您指定 --build-source 選項,但未在 app createapp updatejob createjob update 指令中提供 --registry-secret 選項時,會自動建立此登錄密鑰。
影像註冊表的存取權限
動作 IAM 服務存取權 說明
取回映像檔 Reader 服務存取權 當您將映像檔部署為應用程式或工作時,必須從登錄取回映像檔。 若要取回映像檔,您需要讀取權。 如果登錄是公用的,則您已具有映像檔的讀取權。 如果登錄是專用的,則需要登錄密鑰。
推送映像檔 Reader 和 服務存取 Writer 建置原始碼時,您必須將映像檔推送至登錄。 若要將映像檔推送至登錄,您必須具有讀取及寫入權,並且必須具有登錄密碼。
建立名稱空間 ReaderWriterManager 服務存取權 只有 IBM Cloud Container Registry才支援此動作。
Code Engine 會自動建立登錄密鑰 Administrator 平台存取權
ReaderWriterManager 服務存取權
只有 IBM Cloud Container Registry才支援此動作。

我可以使用服務 ID 嗎?

是,您可以建立服務 ID 並指派其權限。 請注意,當您自動建立 IBM Cloud Container Registry的存取權時,Code Engine 使用者介面也會自動建立服務 ID。 請勿刪除此服務 ID,因為您將無法存取登錄中的映像檔。

我可以存取不同登錄中的映像檔嗎?

是的! 作法如下

我可以限制對特定地區登錄甚至單一名稱空間的取回存取權嗎?

是,您可以編輯服務 ID 的現有 IAM 原則,以將 Reader 服務存取角色限制為該地區登錄或登錄資源(例如名稱空間)。 必須為 IBM Cloud 啟用 IBM Cloud Container Registry IAM 原則後,才能自訂登錄 IAM 原則。

從公用帳戶存取映像檔

如果您的映像檔儲存在公用儲存庫 (例如公用 Docker Hub) 中,則在部署應用程式或執行工作時,您可以直接參照映像檔。 請注意,在公用登錄中儲存映像檔對於開始使用應用程式及工作而言是很適合的,請將您的企業映像檔儲存在專用登錄中。

從主控台存取您自己帳戶中的映像檔

如果您從您擁有或管理的帳戶存取 Code Engine,則當您從主控台建立或更新應用程式、工作或建置時,Code Engine 可以自動將映像檔推送至帳戶中的 IBM Cloud Container Registry 名稱空間,並從中取回映像檔。當您推送映像檔時,Code Engine 甚至可以為您建立名稱空間。 如需相關資訊,請參閱下列主題。

使用 API 金鑰從帳戶存取映像檔

如果您要使用 CLI 存取 Code Engine,則必須先建立 IAM API 金鑰,然後在 Code Engine中 將 IAM API 金鑰儲存為登錄存取權

以下步驟會建立一個 API 金鑰,儲存使用者 ID 的憑證。 與其使用使用者 ID,您可能想要為服務 ID 建立 API 金鑰,該服務 ID 的 IBM Cloud IAM 服務存取政策為 IBM Cloud Container Registry。 如果您選擇鑑別使用者 ID,請確定使用者是功能 ID 或計劃使用者離開的情況,以便 Code Engine 仍可以存取登錄。

從控制台建立 API 金鑰

若要從主控台建立 IBM Cloud IAM API 金鑰,

  1. 啟動 存取權(IAM)概觀

  2. 選取 API 金鑰

  3. 按一下建立 IBM Cloud API 金鑰

  4. 輸入 API 金鑰的名稱和可選描述,然後按一下建立

  5. 複製 API 金鑰,或按下載以儲存它。

    您將無法再次看到此 API 金鑰,因此請務必將它記錄在安全的地方。

既然您已建立 API 金鑰,請 將它儲存為登錄存取權

使用 CLI 建立 API 金鑰

若要使用 CLI 建立IBM Cloud IAM API 金鑰,請執行 iam api-key-create 指令。 例如,要建立一個名為 cliapikey 且描述為 My CLI API key 的 API 金鑰並將其儲存到名為 key_file 的檔案中,請執行以下命令:

ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file

如果您選擇不將金鑰儲存至檔案,則必須記錄建立金鑰時所顯示的 API 金鑰。 此後無法擷取它。

既然您已建立 API 金鑰,請 將它儲存為登錄存取權

存取共用帳戶中的映像檔

若要在共用帳戶中從 IBM Cloud Container Registry 存取映像檔,您必須獲指派 適當的權限

如果您計劃部署應用程式並從共用帳戶執行工作,則在部署應用程式或建立工作時,Code Engine 可以為您取回或推送映像檔。

如果您想要將映像檔從共用帳戶取回至您自己的帳戶,則必須 獲授權存取 IBM Cloud Container Registry

存取不同帳戶中的映像檔

您可以為使用者或服務 ID 指定 IBM Cloud IAM 存取政策,以限制特定登錄影像命名空間或動作 (例如推送或拉取) 的權限。 然後,建立 API 金鑰並將這些登錄認證儲存在 Code Engine中。

例如,若要存取其他 IBM Cloud 帳戶中的影像,請 建立 API 金鑰,以儲存該帳戶中使用者或服務 ID 的 IBM Cloud Container Registry 認證。 然後,在 Code Engine中,使用該金鑰在您的帳戶中 建立存取權

存取專用 Docker Hub 帳戶中的映像檔

若要存取專用 Docker Hub 帳戶中的映像檔,請提供密碼或存取記號來建立登錄存取權。 透過使用存取記號,您可以更輕鬆地授與及撤銷 Docker Hub 帳戶的存取權,而不需要變更密碼。 如需存取權限和 Docker Hub 的詳細資訊,請參閱 建立和管理存取權限

決定是直接使用密碼還是建立存取記號之後,請 建立登錄存取權

新增 Code Engine 的登錄存取權

若要設定不同 IBM Cloud 帳戶中 IBM Cloud Container Registry 的存取權,從專用 Docker Hub 帳戶取回映像檔,或使用 Code Engine CLI 取回或推送映像檔,您可以使用 IBM API 金鑰Docker Hub 密碼或存取記號,透過 Code Engine 來建立登錄存取權,以儲存您的鑑別金鑰或記號。

從主控台新增登錄存取權

開始之前,請 建立專案

  1. 在專案處於 作用中 狀態之後,請在 Code Engine「專案」頁面上按一下專案的名稱。
  2. 從「元件」頁面中,按一下 密鑰及配置對映
  3. 從「密鑰及配置對映」頁面中,按一下 建立 以建立密鑰。
  4. 從「建立密鑰或 configmap」頁面中,完成下列步驟:
    1. 選取 登錄密碼,然後按 下一步
    2. 提供名稱; 例如 mysecret-registry
    3. 指定此密鑰的目標登錄,例如 IBM Cloud Container Registry 或 Docker Hub。
    4. 指定登錄的位置。
    5. 指定使用者名稱。 如果此密鑰適用於 IBM Cloud Container Registry,則使用者名稱為 iamapikey。 如果此密鑰適用於 Docker Hub,則它是您的 Docker ID。
    6. 輸入使用者名稱的認證。 對於 IBM Cloud Container Registry,請使用 IAM API 金鑰。 若為 Docker Hub,您可以使用 Docker Hub 密碼或 存取記號。 若為其他目標登錄,請指定使用者名稱的密碼或 API 金鑰。
    7. 按一下建立以建立秘密。

既然已從主控台建立密鑰,請移至「密鑰及配置對映」頁面,以檢視已定義密鑰及配置對映的清單。 您可以套用過濾器來自訂清單以符合您的需求。

您可以在建立應用程式或工作時,或在建置映像檔時,新增儲存器登錄的存取權。 按一下 配置映像檔,並指定要執行的容器映像檔,包括儲存映像檔的登錄,以及用來擷取映像檔的 登錄存取權

使用 CLI 新增登錄存取權

從 CLI 版本 1.42.0 開始,在 CLI 中定義秘密和處理秘密的工作統一在 secret 命令群組下。 請參閱 ibmcloud ce secret 指令。 使用 --format 選項指定秘密的類別,例如 basic_auth, generic, hmac, ssh, tls,或 registry。 雖然您可以繼續使用 registry 命令群組的同時,利用統一的 secret 命令群組的優勢。 若要建立存取容器註冊表的密碼,請使用 ibmcloud ce secret create --format registry 命令。 若要瞭解在 Code Engine 中處理機密的更多資訊,請參閱處理 機密

若要使用 CLI 新增 IBM Cloud Container Registry 或 Docker Hub 存取權,請使用 secret create --format registry 指令。 此指令需要註冊密碼的名稱、註冊伺服器的 URL,以及存取註冊伺服器的使用者名稱和密碼資訊,也允許其他可選參數。 如需選項的完整清單,請參閱 ibmcloud ce secret create 指令。

例如,下列指令會建立對 us.icr.io 登錄伺服器上稱為 myregistry 的 IBM Cloud Container Registry 實例的登錄存取權:

ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password API_KEY

輸出範例

Creating registry secret 'myregistry'...
OK

下表彙總在此範例中與 secret create --format registry 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud ce secret create 指令。

命令說明
選項 說明
--name 登錄密鑰的名稱。 請使用專案內唯一的名稱。 此值是必要項目。
-名稱必須以小寫英數字元開頭及結尾。
-名稱必須是 253 個字元或更少,且可以包含小寫字母、數字、句點 (.) 及連字號 (-)。
--server 輸入註冊伺服器的 URL。 對於 Container Registry,伺服器名稱是 <region>.icr.io。 例如,us.icr.ioDocker Hub 的值為 https://index.docker.io/v1/
--username 輸入存取登錄伺服器的使用者名稱。 對於 Container Registry,它是 iamapikey。 對於 Docker Hub,它是您的 Docker ID。
--password 輸入密碼。 對於 Container Registry,密碼是您的 API 金鑰。 若為 Docker Hub,您可以使用 Docker Hub 密碼或 存取記號

授權存取服務 ID 為 Container Registry 的 Container Registry

您必須先授權存取服務 ID,然後才能在不同帳戶中新增服務 ID 的存取權。

當您建立服務 ID 時,可以限制存取地區 IBM Cloud Container Registry,甚至限制存取該 IBM Cloud Container Registry 帳戶內的特定名稱空間。

從主控台使用服務 ID 來授權存取 Container Registry

若要從 IBM Cloud Container Registry取回或推送映像檔,您必須建立服務 ID,建立服務 ID 的存取原則,然後建立 API 金鑰以儲存認證。

步驟 1 建立或識別服務 ID,並將它授權給 IBM Cloud Container Registry 服務

  1. 啟動 存取權(IAM)概觀
  2. 選取服務 ID
  3. 如果您有想要使用的服務 ID,請選取它。 如果沒有,請選取 建立,輸入名稱和說明,然後按一下 建立
  4. 從「服務 ID」頁面的 存取原則 區段中,選取 指派存取權
  5. 指派服務 ID 其他存取權 區段中,
    1. 選取 Container Registry 作為存取類型。 按下一步
    2. 選取存取權類型: 所有資源特定資源。 如果您指定 特定資源,則可以根據資源群組、地理位置、區域、資源類型、資源 ID 或資源名稱來新增屬性,以進一步限制存取權。 如果您選取特定資源群組,請務必選取 檢視者 存取權,以取得 資源群組 存取權。 按下一步
    3. 角色和動作 區段中,選取您要授與的存取權類型。 如果您計劃只使用應用程式及工作的影像,請選取 讀者。 如果您要將原始碼和映像檔推送至 Container Registry,也請選取 Writer。 按一下 檢閱
    4. 按一下新增,然後按一下指派

步驟 2 啟用 Container Registry 探索

若要容許 Code Engine 主控台自動探索容器登錄,您必須向 IAM Identity Service鑑別服務 ID。

  1. 從「服務 ID」頁面的 存取原則 區段中,選取 指派存取權
  2. 指派服務 ID 其他存取權 區段中,
    1. 選取 IAM Identity Service 作為存取類型。 按下一步
    2. 選取資源範圍的 特定資源。 選取 資源類型 作為屬性類型,保留 string equals 作為運算子,並輸入 serviceid 作為值。 按一下新增條件
    3. 選取 資源 ID 作為屬性類型,保留 string equals 作為運算子,並放置服務 ID 的 ID。 您可以在服務 ID 的詳細資料頁面或設定時的瀏覽器 URL 中找到您的服務 ID。 按下一步
    4. 角色和動作 區段中,選取平台 操作員 存取權。 按一下 檢閱
    5. 按一下新增,然後按一下指派

步驟 3 為服務 ID 建立 API 金鑰

為服務 ID 建立 API 金鑰。

  1. 從「服務 ID」頁面中,選取 API 金鑰,然後選取 建立

  2. 輸入 API 金鑰的名稱和可選描述,然後按一下建立

  3. 複製 API 金鑰,或按下載以儲存它。

    您將無法再次看到此 API 金鑰,因此請務必將它記錄在安全的地方。

既然您已建立服務 ID 及 API 金鑰的存取原則,您可以 新增存取權至 Code Engine,以從容器登錄取回映像檔。

使用 CLI 授權存取 Container Registry

若要從不同帳戶中的 IBM Cloud Container Registry 取回映像檔,您必須建立服務 ID,建立服務 ID 的存取原則,然後建立 API 金鑰以儲存認證。

  1. 為您的專案建立 IBM Cloud IAM 服務 ID,用於影像拉取秘訣中的 IAM 策略和 API 金鑰憑證,並使用 iam service-id-create 指令。 請務必賦予服務 ID 有助於您稍後擷取服務 ID 的說明,例如包含專案名稱。 如需 iam service-id-create 指令及其選項的完整清單,請參閱 ibmcloud iam service-id-create 指令。

    例如,下列指令會建立稱為 codeengine-myproject-id 且說明為 Service ID for IBM Cloud Container Registry in Code Engine project myproject 的服務 ID:

    ibmcloud iam service-id-create codeengine-myproject-id --description "Service ID for IBM Cloud Container Registry in Code Engine project my proj"
    
  2. 針對您的服務 ID 建立自訂 IBM Cloud IAM 原則,以使用 iam service-policy-create 指令來授與對 IBM Cloud Container Registry 的存取權。 如需 iam service-policy-create 指令及其選項的完整清單,請參閱 ibmcloud iam service-policy-create 指令。

    例如,下列指令會為 codeengine-myproject-id 服務 ID 建立角色為 Reader 的原則:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Reader --service-name container-registry
    

    下表彙總在此範例中與 iam service-policy-create 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud iam service-policy-create 指令。

    iam service-policy-create 指令元件
    選項 說明
    <service_ID> 必要。 取代為您先前建立的 codeengine-<project_name>-id 服務 ID。
    --roles <service_access_role> 必要。 輸入 IBM Cloud Container Registry 的服務存取角色,以限定服務 ID 存取權範圍。 可能值為 ReaderWriterManager。 如果您要取回映像檔,則 Reader 存取權已足夠。 如需相關資訊,請參閱 設定映像檔登錄的權限
    --service-name <container-registry> 必要。 輸入 container-registry,以建立 IBM Cloud Container Registry的 IAM 原則。
  3. 建立自訂服務原則以容許存取 iam-identity 服務,以便 Code Engine 可以使用 iam service-policy-create 指令來擷取服務 ID 的 API 金鑰。

    例如,建立角色為 Operatorcodeengine-myproject-id 服務 ID 的原則:

    ibmcloud iam service-policy-create codeengine-myproject-id --roles Operator --service-name iam-identity
    

    下表彙總在此範例中與 iam service-policy-create 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud iam service-policy-create 指令。

    iam service-policy-create 指令元件
    選項 說明
    <service_ID> 必要。 取代為您先前建立的 codeengine-<project_name>-id 服務 ID。
    --roles <platform_access_role> 必要。 輸入您要設定服務 ID 存取範圍的平台存取角色。 可能的值是 Administrator, Editor, Operator,和 Viewer。 您的服務 ID 需要 Operator 或更高版本。
    --service-name <iam-identity> 必要。 輸入 iam-identity 以建立 IAM 識別服務的 IAM 原則。
  4. 使用 iam service-api-key-create 指令為服務 ID 建立 API 金鑰。 如需 iam service-api-key-create 指令及其選項的完整清單,請參閱 ibmcloud iam service-api-key-create 指令。 將 API 金鑰命名為與您的服務 ID 相似的名稱,並包含您先前建立的服務 ID,codeengine-<project_name>-id。 請務必提供 API 金鑰的說明,以協助您稍後擷取該金鑰。

    例如,下列指令會針對 codeengine-myproject-id 服務 ID 建立一個稱為 codeengine-myproject-key 的金鑰,其說明為 API key for service ID codeengine-myproject-id for Code Engine myproject:

    ibmcloud iam service-api-key-create codeengine-myproject-key codeengine-myproject-id --description "API key for service ID codeengine-myproject-id for Code Engine myproject"
    

    輸出範例

    Please preserve the API key! It cannot be retrieved after it's created.
    
    Name          codeengine-myproject-key
    Description   API key for service ID codeengine-myproject-id for Code Engine myproject
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    

    您將無法再次看到此 API 金鑰,因此請務必將它記錄在安全的地方。

    既然您已備妥服務 ID 及所建立 API 金鑰的存取原則,您可以 新增存取權至 Code Engine,以從容器登錄取回映像檔。

控制對 Code Engine 工作量的 Container Registry 的存取權

假設您想要在 Code Engine 取回映像檔時控制 IBM Cloud Container Registry 的存取權。 例如,您想要控制 Container Registry 對特定 IP 位址的存取權。 請考量下列方法。

  • 使用 環境定義型限制。 透過使用環境定義型限制,如果 Code Engine 專案的 IP 位址曾經變更,則您不需要變更存取權。 您可以將 Container Registry 的存取權限制為網路區域,其中您的網路區域包括 Code Engine 及任何需要存取登錄的項目。

  • 停用 IBM Cloud Container Registry 的公用存取權,並確保 Code Engine 使用專用端點而非公用端點。 請參閱 保護 Container Registry

  • 若要依特定 IP 範圍控制存取權,請使用 API 端點來提取特定 Code Engine 專案的 IP 位址。 請務必注意,這些 IP 位址可能會變更,當發生這種情況時,您必須採取適當的步驟。 請參閱 Code Engine 公用及專用 IP 位址如何將我的 Code Engine 應用程式新增至允許清單?

登錄中映像檔的考量

用於應用程式或工作的映像檔名稱必須採用下列其中一種格式。

  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY:TAG,其中 REGISTRYTAG 是選用項目。 如果未指定 REGISTRY,則默認為 docker.io。 如果未指定 TAG,請不要包含冒號 (:)。TAG 的預設值為 latest
  • REGISTRY/NAMESPACEorDOCKERUSERorDOCKERORG/REPOSITORY@IMAGEID,其中 REGISTRY 是選用項目。 如果未指定 REGISTRY,則預設值為 docker.ioibm 作為 Docker 組織。
圖片名稱規則
元件 容許的字元 長度 其他規則
REGISTRY a-zA-Z0-9 -_. --__ 1-253 (0-127Periods)(label:1-63,noDashOnEnd)
NAMESPACE a-z 0-9 -_ --__ 4-30 (start/end with letterOrNumber)
DOCKERUSERorDOCKERORG a-z 0-9 4-30
REPOSITORY a-z 0-9 -_. / 2-255 (start/end with letterOrNumber)
TAG a-zA-Z0-9 -_. --__.. 0-128 (NOT start with periodOrDash)
IMAGEID a-z 0-9 : (startwith sha256: noOtherColon)

映像檔名稱部分必須符合下列準則。

  • REGISTRY 必須是 253 個字元或更少,並且可以包含小寫或大寫字母、數字、句點 (.)、連字號 (-) 及底線 (_)。請勿使用橫線 (.) 作為最後一個字元。 請勿使用超過 127 個句點 (.),且其間的標籤長度可以介於 1 到 63 個字元之間。
  • NAMESPACE 必須介於 4 到 30 個字元之間,且開頭和結尾必須是小寫字母或數字。NAMESPACE 可以包含小寫英數字元、連字號 (-) 及底線 (_)。
  • DOCKERUSERorDOCKERORG 可以用於 Docker 登錄,而不是 NAMESPACE。 指定 Docker 使用者名稱或 Docker 組織。 您的 Docker 使用者名稱及組織必須介於 4 到 30 個字元之間,且僅包含小寫英數字元或數字。
  • REPOSITORY 必須介於 2 到 255 個字元之間,且開頭和結尾必須是小寫字母或數字。REPOSITORY 可以包含小寫英數字元、正斜線 (/)、句點 (.)、連字號 (-) 及底線 (_)。
  • TAG 必須介於 0 到 128 個字元之間,且可以包含小寫或大寫字母、數字、句點 (.)、連字號 (-) 及底線 (_)。TAG 不得以句點或橫線開頭。 如果您不包含 TAG,也不要包含冒號。
  • IMAGEIDsha256: 為字首,可以包含小寫字母和數字。