在 Docker Desktop 中強制登入的方法

訂閱: Business
適用物件: 管理員

此頁面概述了在 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 System Integrity Protection (SIP) 的保護,因此使用者無法篡改。

  1. 將以下 XML 檔案儲存為副檔名為 .mobileconfig 的檔案,例如 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.configYour 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 重啟時,驗證是否出現“需要登入!”提示。

注意

如果同時存在 plist 檔案和 registry.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 及更早版本,如果您新增多個組織,登入強制將靜默失敗。


更多資源

頁面選項