登錄檔存取管理
注意
登錄檔存取管理僅適用於 Docker Business 客戶。
透過登錄檔存取管理 (RAM),管理員可以確保使用 Docker Desktop 的開發人員只能存取允許的登錄檔。這是透過 Docker Hub 或 Docker 管理主控台中的登錄檔存取管理儀表板來完成的。
登錄檔存取管理支援雲端和內部部署登錄檔。此功能在 DNS 層級運作,因此與所有登錄檔相容。您可以新增任何您想要包含在允許登錄檔清單中的主機名稱或網域名稱。但是,如果登錄檔重新導向到其他網域,例如 `s3.amazon.com`,則您必須將這些網域新增至清單中。
管理員可以允許的範例登錄檔包括
- Docker Hub。預設情況下啟用此功能。
- Amazon ECR
- GitHub 容器登錄檔
- Google 容器登錄檔
- GitLab 容器登錄檔
- Nexus
- Artifactory
先決條件
您需要強制登入。為了讓登錄檔存取管理生效,Docker Desktop 使用者必須向您的組織進行驗證。強制登入可確保您的 Docker Desktop 開發人員始終向您的組織進行驗證,即使他們可以在沒有它的情況下進行驗證,而且該功能也會生效。強制登入可保證該功能始終生效。
設定登錄檔存取管理權限
要設定登錄檔存取管理權限,請執行下列步驟
登入 Docker Hub。
依序選擇「組織」、「您的組織」、「設定」,然後選擇「登錄檔存取」。
啟用登錄檔存取管理來設定您的登錄檔的權限。
注意
啟用後,預設會設定 Docker Hub 登錄檔,但是您也可以限制開發人員使用此登錄檔。
選擇「新增登錄檔」並在適用的欄位中輸入您的登錄檔詳細資訊,然後選擇「建立」將登錄檔新增至您的清單。您可以新增的登錄檔數量沒有限制。
確認您清單中已顯示此登錄檔,然後選擇儲存變更。
新增登錄檔後,最多可能需要 24 小時,變更才會套用到開發人員的機器上。
如果您希望更快套用變更,則必須在開發人員的機器上強制登出 Docker,並讓開發人員重新驗證 Docker Desktop。請參閱下方的注意事項章節,以進一步了解使用此功能的限制。
重要
從 Docker Desktop 4.36 版開始,您可以強制多個組織進行登入。如果開發人員隸屬於具有不同 RAM 策略的多個組織,則只會強制執行
registry.json
檔案、.plist
檔案或登錄機金鑰中列出的第一個組織的 RAM 策略。
提示
由於 RAM 會設定可從何處擷取內容的策略,因此當 Dockerfile 的 ADD 指令的參數為 URL 時,也會受到登錄檔限制的約束。建議您將 URL 參數的網域新增到組織的「登錄檔存取管理」設定中的允許登錄檔位址清單。
要設定登錄檔存取管理權限,請執行下列步驟
登入 管理主控台。
在左側導覽下拉式選單中選擇您的組織,然後選擇登錄檔存取。
啟用登錄檔存取管理來設定您的登錄檔的權限。
注意
啟用後,預設會設定 Docker Hub 登錄檔,但是您也可以限制開發人員使用此登錄檔。
選擇「新增登錄檔」並在適用的欄位中輸入您的登錄檔詳細資訊,然後選擇「建立」將登錄檔新增至您的清單。您可以新增的登錄檔數量沒有限制。
確認您清單中已顯示此登錄檔,然後選擇儲存變更。
新增登錄檔後,最多可能需要 24 小時,變更才會套用到開發人員的機器上。
如果您希望更快套用變更,則必須在開發人員的機器上強制登出 Docker,並讓開發人員重新驗證 Docker Desktop。請參閱下方的注意事項章節,以進一步了解使用此功能的限制。
重要
從 Docker Desktop 4.36 版開始,您可以強制多個組織進行登入。如果開發人員隸屬於具有不同 RAM 策略的多個組織,則只會強制執行
registry.json
檔案、.plist
檔案或登錄機金鑰中列出的第一個組織的 RAM 策略。
提示
由於 RAM 會設定可從何處擷取內容的策略,因此當 Dockerfile 的 ADD 指令的參數為 URL 時,也會受到登錄檔限制的約束。建議您將 URL 參數的網域新增到組織的「登錄檔存取管理」設定中的允許登錄檔位址清單。
驗證限制
開發人員使用其組織憑證成功向 Docker Desktop 驗證後,新的登錄檔存取管理策略就會生效。如果開發人員嘗試透過 Docker CLI 從不允許的登錄檔提取映像,他們會收到錯誤訊息,指出組織已不允許此登錄檔。
注意事項
使用登錄檔存取管理有一些限制
- 預設情況下,Windows 映像提取和映像建置不受限制。若要讓登錄檔存取管理對 Windows 容器模式生效,您必須允許 Windows Docker 精靈使用 Docker Desktop 的內部代理,方法是選取對 Windows Docker 精靈使用代理設定。
- 使用 Kubernetes 驅動程式的建置(例如
docker buildx
)不受限制 - 使用自訂 docker-container 驅動程式的建置(例如
docker buildx
)不受限制 - 封鎖是基於 DNS 的;您必須使用登錄檔的存取控制機制來區分「推送」和「提取」
- WSL 2 至少需要 5.4 系列 Linux 核心(這不適用於較早的 Linux 核心系列)
- 在 WSL 2 網路下,所有 Linux 發行版本的流量都會受到限制(這將在更新的 5.15 系列 Linux 核心版本中解決)
- 啟用 Docker Debug 或 Kubernetes 時,Docker Desktop 提取的映像預設不受限制,即使 RAM 封鎖了 Docker Hub 也是如此。
此外,登錄檔存取管理是在主機層級運作,而不是 IP 位址層級。開發人員可以在其網域解析度內繞過此限制,例如,針對本機代理執行 Docker 或修改其作業系統的 sts
檔案。封鎖這類操作形式不在 Docker Desktop 的職責範圍內。