強制 Docker Desktop 登入的方式

此頁面概述了強制 Docker Desktop 登入的不同方法。

登錄機碼方法(僅限 Windows)

注意

登錄機碼方法適用於 Docker Desktop 4.32 版及更高版本。

若要強制在 Windows 上的 Docker Desktop 登入,您可以設定一個登錄機碼來指定您組織允許的使用者。以下步驟將引導您建立和部署登錄機碼以強制執行此策略

  1. 建立登錄機碼。您的新機碼應如下所示

    $ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop
    
  2. 建立多字串值 `allowedOrgs`。

    重要

    從 Docker Desktop 4.36 版及更高版本開始,您可以新增多個組織。使用 Docker Desktop 4.35 版及更早版本時,如果您新增多個組織,強制登入將會靜默失敗。

  3. 使用您組織的名稱,全部小寫作為字串資料。

  4. 重新啟動 Docker Desktop。

  5. Docker Desktop 重新啟動後,確認出現「需要登入!」提示。

在某些情況下,可能需要重新啟動系統才能使強制執行生效。

注意

如果同時存在登錄機碼和 `registry.json` 檔案,則登錄機碼優先。

透過群組原則部署範例

以下範例說明如何使用群組原則部署登錄機碼以強制在 Docker Desktop 上登入。根據您組織的基礎架構、安全策略和管理工具,有多種方法可以部署此設定。

  1. 建立登錄腳本。撰寫一個腳本來建立 `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop` 機碼,新增 `allowedOrgs` 多字串,然後將值設定為您組織的名稱。
  2. 在群組原則中,建立或編輯適用於您要鎖定之電腦或使用者的群組原則物件 (GPO)。
  3. 在 GPO 中,瀏覽至「電腦設定」,然後選取「偏好設定」。
  4. 選取「Windows 設定」,然後選取「登錄」。
  5. 若要新增登錄項目,請在「登錄」節點上按一下滑鼠右鍵,選取「新增」,然後選取「登錄項目」。
  6. 將新的登錄項目設定為與您建立的登錄腳本相符,將動作指定為「更新」。請確保您輸入正確的路徑、值名稱 (`allowedOrgs`) 和值資料(您的組織名稱)。
  7. 將 GPO 連結到包含您要套用此設定之電腦的組織單位 (OU)。
  8. 先在一小部分電腦上測試 GPO,以確保其行為符合預期。您可以在測試機上使用 `gpupdate /force` 命令手動更新其群組原則設定,並檢查登錄以確認變更。
  9. 確認後,您可以繼續進行更廣泛的部署。監控部署,以確保在組織的電腦上正確套用設定。

設定檔方法(僅限 Mac)

注意

設定檔方法處於早期存取階段,適用於 Docker Desktop 4.36 版及更高版本。

設定檔是 macOS 的一項功能,可讓您將設定資訊發佈到您管理的 Mac。這是 macOS 上強制登入最安全的方法,因為已安裝的設定檔受到 Apple 系統完整性保護 (SIP) 的保護,因此使用者無法竄改。

  1. 使用副檔名 `.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>
  2. 將佔位符 `com.yourcompany.docker.config` 和 `Your Company Name` 更改為您公司的名稱。

  3. 新增您的組織名稱。允許的組織名稱儲存在 `allowedOrgs` 屬性中。它可以包含單一組織的名稱或以分號分隔的組織名稱清單

             <key>allowedOrgs</key>
             <string>first_org;second_org</string>
  4. 使用 MDM 解決方案將您修改過的 `.mobileconfig` 檔案發佈到您的 macOS 用戶端。

plist 方法(僅限 Mac)

注意

`plist` 方法適用於 Docker Desktop 4.32 版及更高版本。

若要強制在 macOS 上的 Docker Desktop 登入,您可以使用定義所需設定的 `plist` 檔案。以下步驟將引導您完成建立和部署必要的 `plist` 檔案以強制執行此策略的過程

  1. 建立檔案 `/Library/Application Support/com.docker.docker/desktop.plist`。

  2. 在文字編輯器中開啟 `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 版及更早版本時,如果您新增多個組織,強制登入將會靜默失敗。

  3. 修改檔案權限,確保非管理員使用者無法編輯該檔案。

  4. 重新啟動 Docker Desktop。

  5. Docker Desktop 重新啟動後,確認出現「需要登入!」提示。

注意

如果同時存在 plistregistry.json 檔案,則 plist 檔案優先。

部署範例

以下範例說明如何建立和散佈 plist 檔案以強制在 Docker Desktop 上登入。根據您組織的基礎架構、安全策略和管理工具,有多種方法可以部署此設定。


  1. 按照先前概述的步驟建立 desktop.plist 檔案。
  2. 使用 Jamf 或 Fleet 等 MDM 工具將 desktop.plist 檔案散佈到目標 macOS 裝置上的 /Library/Application Support/com.docker.docker/
  3. 透過 MDM 工具,將檔案權限設定為僅允許管理員編輯。
  1. 建立一個 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 或其他管理員帳戶,確保未經授權的使用者無法輕易修改它。
  2. 在整個組織中部署指令碼之前,請在本地 macOS 電腦上測試它,以確保其行為符合預期。注意目錄路徑、權限和 plist 設定是否成功套用。
  3. 確保您能夠在 macOS 裝置上遠端執行指令碼。這可能涉及設定 SSH 存取或使用支援 macOS 的遠端支援工具。
  4. 使用適合您組織基礎架構的遠端指令碼執行方法。選項包括:
    • SSH:如果在目標電腦上啟用了 SSH,您可以使用它來遠端執行指令碼。此方法需要知道裝置的 IP 位址和適當的憑證。
    • 遠端支援工具:對於使用遠端支援工具的組織,您可以將指令碼新增到任務中,並在所有選定的電腦上執行它。
  5. 確保指令碼在所有目標裝置上按預期執行。您可能需要檢查記錄檔或在指令碼本身內實作記錄功能,以回報其成功或失敗。

registry.json 方法(所有平台)

以下說明說明如何建立和部署 registry.json 檔案到單一裝置。部署 registry.json 檔案的方法有很多種。您可以參考 .plist 檔案章節中概述的範例部署。您選擇的方法取決於您組織的基礎架構、安全策略和終端使用者的管理權限。

選項 1:建立 registry.json 檔案以強制登入

  1. 確保使用者是 Docker 中您組織的成員。如需詳細資訊,請參閱管理成員

  2. 建立 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
  3. registry.json 檔案中指定您的組織。

    在文字編輯器中開啟 registry.json 檔案,並新增以下內容,其中 myorg 替換為您組織的名稱。檔案內容區分大小寫,您必須使用小寫字母表示您組織的名稱。

    {
    "allowedOrgs": ["myorg1", "myorg2"]
    }

    重要

    從 Docker Desktop 4.36 版及更高版本開始,您可以新增多個組織。使用 Docker Desktop 4.35 版及更早版本時,如果您新增多個組織,強制登入將會靜默失敗。

  4. 驗證是否已強制執行登入。

    要啟用 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--) 和所有權 (rootadmin)。

$ 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 版及更早版本,如果您新增多個組織,登入強制執行將會靜默失敗。


更多資源