存取儲存器登錄

IBM Cloud® Code Engine 所使用的影像通常儲存於一個註冊庫中,該註冊庫可以是對公眾開放的(公開註冊庫),也可以是僅限一小群使用者存取的(私人註冊庫)。

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

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

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

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

為了從註冊表中提取映像,Code Engine 會使用一種稱為「imagePullSecret」的特殊類型 Kubernetes 機密。 此映像檔取回密碼會儲存用來存取容器登錄的認證。 當您透過 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

存取不同帳戶中的映像檔

您可以將「IBM Cloud」IAM 存取政策指派給使用者或服務 ID,以限制對特定註冊表映像命名空間或操作(例如推送或拉取)的權限。 接著,建立一個 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.io。 對於 Docker 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,該 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 存取權限限定於其範圍內的平台存取角色。 可能的值包括:AdministratorEditorOperator 以及 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: 為字首,可以包含小寫字母和數字。