配置登录强制执行
您可以通过多种方法强制执行 Docker Desktop 的登录。请选择最适合您组织的基础设施和安全要求的方法。
选择您的方法
| 方法 | 平台 |
|---|---|
| 注册表项 | 仅限 Windows |
| 配置文件 | 仅限 macOS |
plist 文件 |
仅限 macOS |
registry.json |
所有平台 |
Tip对于 macOS,配置文件提供了最高的安全性,因为它们受到 Apple 系统完整性保护 (SIP) 的保护。
Windows:注册表项方法
要手动配置注册表项方法:
-
创建注册表项:
$ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop -
创建一个多字符串值名称
allowedOrgs。 -
使用您的组织名称作为字符串数据:
- 仅使用小写字母
- 每行添加一个组织
- 请勿使用空格或逗号作为分隔符
-
重启 Docker Desktop。
-
验证 Docker Desktop 中是否出现
Sign in required!提示。
Important您可以在 Docker Desktop 4.36 及更高版本中添加多个组织。在 4.35 及更早版本中,添加多个组织会导致登录强制执行静默失败。
使用组策略在您的组织内部署注册表项:
- 使用所需的键结构创建注册表脚本。
- 在组策略管理中,创建或编辑一个 GPO。
- 导航到 计算机配置 > 首选项 > Windows 设置 > 注册表。
- 右键单击 注册表 > 新建 > 注册表项。
- 配置注册表项:
- 操作:更新
- 路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop - 值名称:
allowedOrgs - 值数据:您的组织名称
- 将 GPO 链接到目标组织单位 (OU)。
- 使用
gpupdate/force在小范围用户组中进行测试。 - 验证后在整个组织内部署。
macOS:配置文件方法(推荐)
配置文件为 macOS 提供了最安全的强制执行方法,因为它们受到 Apple 系统完整性保护的保护。
该有效负载是一个键值对的字典。Docker Desktop 支持以下键:
allowedOrgs:在一个字符串中设置组织列表,每个组织用分号分隔。
在 Docker Desktop 4.48 及更高版本中,还支持以下键:
overrideProxyHTTP:设置用于传出 HTTP 请求的 HTTP 代理 URL。overrideProxyHTTPS:设置用于传出 HTTPS 请求的 HTTP 代理 URL。overrideProxyExclude:绕过指定主机和域的代理设置。使用逗号分隔的列表。overrideProxyPAC:设置 PAC 文件所在的文件路径。它优先于所选代理上的远程 PAC 文件。overrideProxyEmbeddedPAC:设置内存中 PAC 文件的内容。它优先于overrideProxyPAC。
通过配置文件覆盖至少一个代理设置将自动锁定这些设置,因为它们由 macOS 管理。
- 创建一个名为
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> <key>overrideProxyHTTP</key> <string>http://company.proxy:port</string> <key>overrideProxyHTTPS</key> <string>https://company.proxy:port</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替换为您的组织名称 - 将
PayloadUUID替换为随机生成的 UUID - 用您的组织名称(用分号分隔)更新
allowedOrgs的值 - 将
company.proxy:port替换为 http/https 代理服务器主机(或 IP 地址)和端口
- 将
- 使用您的 MDM 解决方案部署配置文件。
- 在 系统设置 > 通用 > VPN 与设备管理 下的 设备(托管) 中验证配置文件是否存在。确保配置文件以正确的名称和设置列出。
一些 MDM 解决方案允许您将有效负载指定为纯键值设置字典,而无需完整的 .mobileconfig 包装器:
<dict>
<key>allowedOrgs</key>
<string>first_org;second_org</string>
<key>overrideProxyHTTP</key>
<string>http://company.proxy:port</string>
<key>overrideProxyHTTPS</key>
<string>https://company.proxy:port</string>
</dict>macOS:plist 文件方法
对于 Docker Desktop 4.32 及更高版本的 macOS,请使用此替代方法。
- 创建文件
/Library/Application Support/com.docker.docker/desktop.plist。 - 添加此内容,将
myorg1和myorg2替换为您的组织名称:<?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。
- 验证 Docker Desktop 中是否出现
Sign in required!提示。
创建并部署一个脚本,用于在整个组织内分发:
#!/bin/bash
# 如果目录不存在则创建
sudo mkdir -p "/Library/Application Support/com.docker.docker"
# 写入 plist 文件
sudo defaults write "/Library/Application Support/com.docker.docker/desktop.plist" allowedOrgs -array "myorg1" "myorg2"
# 设置适当的权限
sudo chmod 644 "/Library/Application Support/com.docker.docker/desktop.plist"
sudo chown root:admin "/Library/Application Support/com.docker.docker/desktop.plist"使用 SSH、远程支持工具或您首选的部署方法来部署此脚本。
所有平台:registry.json 方法
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 |
基本设置
- 确保用户是您 Docker 组织的成员。
- 在适合您平台的位置创建
registry.json文件。 - 添加此内容,将组织名称替换为您自己的:
{ "allowedOrgs": ["myorg1", "myorg2"] } - 设置文件权限以防止用户编辑。
- 重启 Docker Desktop。
- 验证 Docker Desktop 中是否出现
Sign in required!提示。
Tip如果用户在强制执行登录后无法启动 Docker Desktop, 他们可能需要更新到最新版本。
Windows (以管理员身份运行 PowerShell)
Set-Content /ProgramData/DockerDesktop/registry.json '{"allowedOrgs":["myorg1","myorg2"]}'macOS
sudo mkdir -p "/Library/Application Support/com.docker.docker"
echo '{"allowedOrgs":["myorg1","myorg2"]}' | sudo tee "/Library/Application Support/com.docker.docker/registry.json"
Linux
sudo mkdir -p /usr/share/docker-desktop/registry
echo '{"allowedOrgs":["myorg1","myorg2"]}' | sudo tee /usr/share/docker-desktop/registry/registry.json
在安装 Docker Desktop 期间创建 registry.json 文件:
Windows
# PowerShell
Start-Process '.\Docker Desktop Installer.exe' -Wait 'install --allowed-org=myorg'
# 命令提示符
"Docker Desktop Installer.exe" install --allowed-org=myorgmacOS
sudo hdiutil attach Docker.dmg
sudo /Volumes/Docker/Docker.app/Contents/MacOS/install --allowed-org=myorg
sudo hdiutil detach /Volumes/Docker
方法优先级
当同一系统上存在多种配置方法时,Docker Desktop 使用以下优先级顺序:
- 注册表项(仅限 Windows)
- 配置文件(仅限 macOS)
- plist 文件(仅限 macOS)
- registry.json 文件
ImportantDocker Desktop 4.36 及更高版本支持在单个配置中设置多个组织。早期版本(4.35 及以下)在指定多个组织时会静默失败。
登录强制执行问题排查
如果登录强制执行不起作用:
- 验证文件位置和权限
- 检查组织名称是否使用了小写字母
- 重启 Docker Desktop 或重启系统
- 确认用户是指定组织的成员
- 将 Docker Desktop 更新到最新版本