强制登录 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 重新启动时,验证是否显示 Sign in required!(需要登录!)提示。

在某些情况下,可能需要重新启动系统才能使实施生效。

注意

如果注册表项和registry.jsonfile 都存在,则注册表项优先。

通过组策略进行部署示例

以下示例概述了如何部署注册表项以使用组策略在 Docker Desktop 上强制登录。有多种方法可以部署此配置,具体取决于您组织的基础设施、安全策略和管理工具。

  1. 创建注册表脚本。编写脚本以创建HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop键中,添加allowedOrgsmulti-string,然后将值设置为您的组织名称。
  2. 在组策略中,创建或编辑适用于要作为目标的计算机或用户的组策略目标 (GPO)。
  3. 在 GPO 中,导航到 计算机配置 并选择 首选项.
  4. 选择 Windows 设置,然后选择注册表
  5. 要添加注册表项,请右键单击 Registry 节点,选择 New (新建),然后选择 Registry Item(注册表项)。
  6. 配置新的注册表项以匹配您创建的注册表脚本,并将作指定为 Update。确保输入正确的路径、值名称 (allowedOrgs) 和 value data (您的组织名称)。
  7. 将 GPO 链接到包含要应用此设置的计算机的组织单位 (OU)。
  8. 首先在一小部分计算机上测试 GPO,以确保其行为符合预期。您可以使用gpupdate /force命令手动刷新其组策略设置并检查注册表以确认更改。
  9. 验证后,您可以继续进行更广泛的部署。监视部署以确保在组织的计算机上正确应用设置。

配置文件方法(仅限 Mac)

注意

配置文件方法处于早期访问阶段,可用于 Docker Desktop 版本 4.36 及更高版本。

配置文件是 macOS 的一项功能,可让您分发 配置信息发送到您管理的 Mac。这是最安全的方法 在 macOS 上强制登录,因为安装的配置文件是 受 Apple 的系统完整性保护 (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 重新启动时,验证是否显示 Sign in required!(需要登录!)提示。

注意

如果plistregistry.json文件都存在,则plistfile 优先。

部署示例

以下示例概述了如何创建和分发plist文件强制在 Docker Desktop 上登录。有多种方法可以部署此配置,具体取决于您组织的基础设施、安全策略和管理工具。


  1. 按照前面概述的步骤创建desktop.plist文件。
  2. 使用 Jamf 或 Fleet 等 MDM 工具分发desktop.plistfile 设置为/Library/Application Support/com.docker.docker/在目标 macOS 设备上。
  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"
      
    • 更改plist文件以限制编辑, 使用chmod并且可能chown将所有者设置为 root 或其他管理员账户,确保未经授权的用户无法轻易修改。
  2. 在整个组织中部署脚本之前,请在本地 macOS 计算机上对其进行测试,以确保其行为符合预期。注意目录路径、权限以及plist设置。
  3. 确保您能够在 macOS 设备上远程执行脚本。这可能涉及设置 SSH 访问或使用支持 macOS 的远程支持工具。
  4. 使用适合您组织基础设施的远程脚本执行方法。选项包括:
    • SSH:如果在目标计算机上启用了 SSH,则可以使用它来远程执行脚本。此方法需要了解设备的 IP 地址和相应的凭据。
    • 远程支持工具:对于使用远程支持工具的组织,您可以将脚本添加到任务中,并在所有选定的计算机上执行该脚本。
  5. 确保脚本在所有目标设备上按预期运行。您可能必须检查日志文件或在脚本本身中实施日志记录,以报告其成功或失败。

registry.json 方法 (全部)

以下说明说明如何创建和部署registry.json文件复制到单个设备。有多种方法可以部署registry.json文件。您可以按照.plistfile 部分。您选择的方法取决于组织的基础设施、安全策略和最终用户的管理权限。

选项 1:创建 registry.json 文件以强制登录

  1. 确保用户是 Docker 中组织的成员。了解更多 详细信息,请参阅 管理成员

  2. 创建registry.json文件。

    根据用户的作系统,创建一个名为registry.json,并确保用户无法编辑该文件。

    平台位置
    窗户/ProgramData/DockerDesktop/registry.json
    苹果电脑/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 启动时,验证 Sign in 必填!提示符。

    在某些情况下,可能需要重新启动系统才能使实施生效。

    提示

    如果您的用户在您强制登录后启动 Docker Desktop 时遇到问题,他们可能需要更新到最新版本。

选项 2:安装 Docker Desktop 时创建 registry.json 文件

要创建registry.json文件,请根据用户的作系统使用以下说明。


要自动创建registry.json文件, 下载Docker Desktop Installer.exe并运行以下命令之一 从包含Docker Desktop Installer.exe.取代myorg替换为您的组织名称。您必须对 organization's name (组织名称)。

如果您使用的是 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 及更早版本时,如果添加多个组织登录,则强制登录将失败,且会以静默方式执行。

要自动创建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替换为您的组织名称。文件 内容区分大小写,您必须使用 organization's name (组织名称)。

PS>  Set-Content /ProgramData/DockerDesktop/registry.json '{"allowedOrgs":["myorg"]}'

这将创建registry.json文件位于C:\ProgramData\DockerDesktop\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"

这将创建(或更新,如果文件已存在)registry.json文件 在/Library/Application Support/com.docker.docker/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

这将创建(或更新,如果文件已存在)registry.json文件 在/usr/share/docker-desktop/registry/registry.json并包括 用户所属的组织信息。确保文件具有 预期内容,并且用户无法编辑此文件,则只有根可以编辑。

验证文件的内容是否包含正确的信息:

$ 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 及更早版本时,如果添加多个组织登录,则强制登录将失败,且会以静默方式执行。


更多资源