在 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 及更早版本,如果您添加多个组织,登录强制将静默失败。


更多资源

页面选项