強制 Docker Desktop 登入的方式
此頁面概述了強制 Docker Desktop 登入的不同方法。
登錄機碼方法(僅限 Windows)
注意
登錄機碼方法適用於 Docker Desktop 4.32 版及更高版本。
若要強制在 Windows 上的 Docker Desktop 登入,您可以設定一個登錄機碼來指定您組織允許的使用者。以下步驟將引導您建立和部署登錄機碼以強制執行此策略
建立登錄機碼。您的新機碼應如下所示
$ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop
建立多字串值 `allowedOrgs`。
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以新增多個組織。使用 Docker Desktop 4.35 版及更早版本時,如果您新增多個組織,強制登入將會靜默失敗。
使用您組織的名稱,全部小寫作為字串資料。
重新啟動 Docker Desktop。
Docker Desktop 重新啟動後,確認出現「需要登入!」提示。
在某些情況下,可能需要重新啟動系統才能使強制執行生效。
注意
如果同時存在登錄機碼和 `registry.json` 檔案,則登錄機碼優先。
透過群組原則部署範例
以下範例說明如何使用群組原則部署登錄機碼以強制在 Docker Desktop 上登入。根據您組織的基礎架構、安全策略和管理工具,有多種方法可以部署此設定。
- 建立登錄腳本。撰寫一個腳本來建立 `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop` 機碼,新增 `allowedOrgs` 多字串,然後將值設定為您組織的名稱。
- 在群組原則中,建立或編輯適用於您要鎖定之電腦或使用者的群組原則物件 (GPO)。
- 在 GPO 中,瀏覽至「電腦設定」,然後選取「偏好設定」。
- 選取「Windows 設定」,然後選取「登錄」。
- 若要新增登錄項目,請在「登錄」節點上按一下滑鼠右鍵,選取「新增」,然後選取「登錄項目」。
- 將新的登錄項目設定為與您建立的登錄腳本相符,將動作指定為「更新」。請確保您輸入正確的路徑、值名稱 (`allowedOrgs`) 和值資料(您的組織名稱)。
- 將 GPO 連結到包含您要套用此設定之電腦的組織單位 (OU)。
- 先在一小部分電腦上測試 GPO,以確保其行為符合預期。您可以在測試機上使用 `gpupdate /force` 命令手動更新其群組原則設定,並檢查登錄以確認變更。
- 確認後,您可以繼續進行更廣泛的部署。監控部署,以確保在組織的電腦上正確套用設定。
設定檔方法(僅限 Mac)
注意
設定檔方法處於早期存取階段,適用於 Docker Desktop 4.36 版及更高版本。
設定檔是 macOS 的一項功能,可讓您將設定資訊發佈到您管理的 Mac。這是 macOS 上強制登入最安全的方法,因為已安裝的設定檔受到 Apple 系統完整性保護 (SIP) 的保護,因此使用者無法竄改。
使用副檔名 `.mobileconfig` 儲存以下 XML 檔案,例如 `docker.mobileconfig`
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>PayloadContent</key> <array> <dict> <key>PayloadType</key> <string>com.docker.config</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadIdentifier</key> <string>com.docker.config</string> <key>PayloadUUID</key> <string>eed295b0-a650-40b0-9dda-90efb12be3c7</string> <key>PayloadDisplayName</key> <string>Docker Desktop Configuration</string> <key>PayloadDescription</key> <string>Configuration profile to manage Docker Desktop settings.</string> <key>PayloadOrganization</key> <string>Your Company Name</string> <key>allowedOrgs</key> <string>first_org;second_org</string> </dict> </array> <key>PayloadType</key> <string>Configuration</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadIdentifier</key> <string>com.yourcompany.docker.config</string> <key>PayloadUUID</key> <string>0deedb64-7dc9-46e5-b6bf-69d64a9561ce</string> <key>PayloadDisplayName</key> <string>Docker Desktop Config Profile</string> <key>PayloadDescription</key> <string>Config profile to enforce Docker Desktop settings for allowed organizations.</string> <key>PayloadOrganization</key> <string>Your Company Name</string> </dict> </plist>
將佔位符 `com.yourcompany.docker.config` 和 `Your Company Name` 更改為您公司的名稱。
新增您的組織名稱。允許的組織名稱儲存在 `allowedOrgs` 屬性中。它可以包含單一組織的名稱或以分號分隔的組織名稱清單
<key>allowedOrgs</key> <string>first_org;second_org</string>
使用 MDM 解決方案將您修改過的 `.mobileconfig` 檔案發佈到您的 macOS 用戶端。
plist 方法(僅限 Mac)
注意
`plist` 方法適用於 Docker Desktop 4.32 版及更高版本。
若要強制在 macOS 上的 Docker Desktop 登入,您可以使用定義所需設定的 `plist` 檔案。以下步驟將引導您完成建立和部署必要的 `plist` 檔案以強制執行此策略的過程
建立檔案 `/Library/Application Support/com.docker.docker/desktop.plist`。
在文字編輯器中開啟 `desktop.plist` 並新增以下內容,其中 `myorg` 將替換為您組織的名稱,全部小寫
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>allowedOrgs</key> <array> <string>myorg1</string> <string>myorg2</string> </array> </dict> </plist>
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以新增多個組織。使用 Docker Desktop 4.35 版及更早版本時,如果您新增多個組織,強制登入將會靜默失敗。
修改檔案權限,確保非管理員使用者無法編輯該檔案。
重新啟動 Docker Desktop。
Docker Desktop 重新啟動後,確認出現「需要登入!」提示。
注意
如果同時存在
plist
和registry.json
檔案,則plist
檔案優先。
部署範例
以下範例說明如何建立和散佈 plist
檔案以強制在 Docker Desktop 上登入。根據您組織的基礎架構、安全策略和管理工具,有多種方法可以部署此設定。
- 按照先前概述的步驟建立
desktop.plist
檔案。 - 使用 Jamf 或 Fleet 等 MDM 工具將
desktop.plist
檔案散佈到目標 macOS 裝置上的/Library/Application Support/com.docker.docker/
。 - 透過 MDM 工具,將檔案權限設定為僅允許管理員編輯。
- 建立一個 Bash 指令碼,可以檢查正確目錄中是否存在
.plist
檔案,根據需要建立或修改它,並設定適當的權限。在您的指令碼中包含以下指令:- 導覽至
/Library/Application Support/com.docker.docker/
目錄,如果該目錄不存在,則建立它。 - 使用
defaults
指令將必要的鍵和值寫入desktop.plist
檔案。例如:$ defaults write /Library/Application\ Support/com.docker.docker/desktop.plist allowedOrgs -string "myorg"
- 使用
chmod
更改plist
檔案的權限以限制編輯,並可能使用chown
將所有者設定為 root 或其他管理員帳戶,確保未經授權的使用者無法輕易修改它。
- 導覽至
- 在整個組織中部署指令碼之前,請在本地 macOS 電腦上測試它,以確保其行為符合預期。注意目錄路徑、權限和
plist
設定是否成功套用。 - 確保您能夠在 macOS 裝置上遠端執行指令碼。這可能涉及設定 SSH 存取或使用支援 macOS 的遠端支援工具。
- 使用適合您組織基礎架構的遠端指令碼執行方法。選項包括:
- SSH:如果在目標電腦上啟用了 SSH,您可以使用它來遠端執行指令碼。此方法需要知道裝置的 IP 位址和適當的憑證。
- 遠端支援工具:對於使用遠端支援工具的組織,您可以將指令碼新增到任務中,並在所有選定的電腦上執行它。
- 確保指令碼在所有目標裝置上按預期執行。您可能需要檢查記錄檔或在指令碼本身內實作記錄功能,以回報其成功或失敗。
registry.json 方法(所有平台)
以下說明說明如何建立和部署 registry.json
檔案到單一裝置。部署 registry.json
檔案的方法有很多種。您可以參考 .plist
檔案章節中概述的範例部署。您選擇的方法取決於您組織的基礎架構、安全策略和終端使用者的管理權限。
選項 1:建立 registry.json 檔案以強制登入
確保使用者是 Docker 中您組織的成員。如需詳細資訊,請參閱管理成員。
建立
registry.json
檔案。根據使用者的作業系統,在以下位置建立名為
registry.json
的檔案,並確保使用者無法編輯該檔案。平台 位置 Windows /ProgramData/DockerDesktop/registry.json
Mac /Library/Application Support/com.docker.docker/registry.json
Linux /usr/share/docker-desktop/registry/registry.json
在
registry.json
檔案中指定您的組織。在文字編輯器中開啟
registry.json
檔案,並新增以下內容,其中myorg
替換為您組織的名稱。檔案內容區分大小寫,您必須使用小寫字母表示您組織的名稱。{ "allowedOrgs": ["myorg1", "myorg2"] }
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以新增多個組織。使用 Docker Desktop 4.35 版及更早版本時,如果您新增多個組織,強制登入將會靜默失敗。
驗證是否已強制執行登入。
要啟用
registry.json
檔案,請在使用者的電腦上重新啟動 Docker Desktop。當 Docker Desktop 啟動時,請確認出現需要登入!提示。在某些情況下,可能需要重新啟動系統才能使強制執行生效。
提示
如果您的使用者在您強制執行登入後啟動 Docker Desktop 時遇到問題,他們可能需要更新到最新版本。
選項 2:安裝 Docker Desktop 時建立 registry.json 檔案
要在安裝 Docker Desktop 時建立 registry.json
檔案,請根據使用者的作業系統使用以下說明。
要在安裝 Docker Desktop 時自動建立 registry.json
檔案,請下載 Docker Desktop Installer.exe
並從包含 Docker Desktop Installer.exe
的目錄執行以下其中一個指令。將 myorg
替換為您組織的名稱。您必須使用小寫字母表示您組織的名稱。
如果您使用的是 PowerShell
PS> Start-Process '.\Docker Desktop Installer.exe' -Wait 'install --allowed-org=myorg'
如果您使用的是 Windows 命令提示字元
C:\Users\Admin> "Docker Desktop Installer.exe" install --allowed-org=myorg
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以將多個組織新增到單個
registry.json
檔案中。使用 Docker Desktop 4.35 版及更早版本,如果您新增多個組織,登入強制執行將會靜默失敗。
要在安裝 Docker Desktop 時自動建立 registry.json
檔案,請下載 Docker.dmg
並從包含 Docker.dmg
的目錄在終端機中執行以下指令。將 myorg
替換為您組織的名稱。您必須使用小寫字母表示您組織的名稱。
$ sudo hdiutil attach Docker.dmg
$ sudo /Volumes/Docker/Docker.app/Contents/MacOS/install --allowed-org=myorg
$ sudo hdiutil detach /Volumes/Docker
選項 3:使用命令列建立 registry.json 檔案
要使用命令列建立 registry.json
檔案,請根據使用者的作業系統使用以下說明。
要使用 CLI 建立 registry.json
檔案,請以系統管理員身分執行以下 PowerShell 命令,並將 myorg
替換為您組織的名稱。檔案內容區分大小寫,您必須使用小寫字母表示您組織的名稱。
PS> Set-Content /ProgramData/DockerDesktop/registry.json '{"allowedOrgs":["myorg"]}'
這會在 C:\ProgramData\DockerDesktop\registry.json
建立 registry.json
檔案,並包含使用者所屬的組織資訊。確保使用者無法編輯此檔案,只有系統管理員可以編輯。
PS C:\ProgramData\DockerDesktop> Get-Acl .\registry.json
Directory: C:\ProgramData\DockerDesktop
Path Owner Access
---- ----- ------
registry.json BUILTIN\Administrators NT AUTHORITY\SYSTEM Allow FullControl...
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以將多個組織新增到單個
registry.json
檔案中。使用 Docker Desktop 4.35 版及更早版本,如果您新增多個組織,登入強制執行將會靜默失敗。
要使用 CLI 建立 registry.json
檔案,請在終端機中執行以下指令,並將 myorg
替換為您組織的名稱。檔案內容區分大小寫,您必須使用小寫字母表示您組織的名稱。
$ sudo mkdir -p "/Library/Application Support/com.docker.docker"
$ echo '{"allowedOrgs":["myorg"]}' | sudo tee "/Library/Application Support/com.docker.docker/registry.json"
這會在 /Library/Application Support/com.docker.docker/registry.json
建立(或更新,如果檔案已存在)registry.json
檔案,並包含使用者所屬的組織資訊。確保檔案具有預期的內容,並且使用者無法編輯此檔案,只有系統管理員可以編輯。
驗證檔案的內容是否包含正確的資訊。
$ sudo cat "/Library/Application Support/com.docker.docker/registry.json"
{"allowedOrgs":["myorg"]}
驗證檔案是否具有預期的權限 (-rw-r--r--
) 和所有權 (root
和 admin
)。
$ sudo ls -l "/Library/Application Support/com.docker.docker/registry.json"
-rw-r--r-- 1 root admin 26 Jul 27 22:01 /Library/Application Support/com.docker.docker/registry.json
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以將多個組織新增到單個
registry.json
檔案中。使用 Docker Desktop 4.35 版及更早版本,如果您新增多個組織,登入強制執行將會靜默失敗。
要使用 CLI 建立 registry.json
檔案,請在終端機中執行以下指令,並將 myorg
替換為您組織的名稱。檔案內容區分大小寫,您必須使用小寫字母表示您組織的名稱。
$ sudo mkdir -p /usr/share/docker-desktop/registry
$ echo '{"allowedOrgs":["myorg"]}' | sudo tee /usr/share/docker-desktop/registry/registry.json
這會在 /usr/share/docker-desktop/registry/registry.json
建立(或更新,如果檔案已存在)registry.json
檔案,並包含使用者所屬的組織資訊。確保檔案具有預期的內容,並且使用者無法編輯此檔案,只有 root 可以編輯。
驗證檔案的內容是否包含正確的資訊。
$ sudo cat /usr/share/docker-desktop/registry/registry.json
{"allowedOrgs":["myorg"]}
驗證檔案是否具有預期的權限 (-rw-r--r--
) 和所有權 (root
)。
$ sudo ls -l /usr/share/docker-desktop/registry/registry.json
-rw-r--r-- 1 root root 26 Jul 27 22:01 /usr/share/docker-desktop/registry/registry.json
重要
從 Docker Desktop 4.36 版及更高版本開始,您可以將多個組織新增到單個
registry.json
檔案中。使用 Docker Desktop 4.35 版及更早版本,如果您新增多個組織,登入強制執行將會靜默失敗。