强制登录 Docker Desktop 的方法
本页概述了强制登录 Docker Desktop 的不同方法。
注册表项方法(仅限 Windows)
注意
注册表项方法适用于 Docker Desktop 版本 4.32 及更高版本。
要在 Windows 上强制登录 Docker Desktop,您可以配置一个注册表项来指定组织允许的用户。以下步骤将指导您创建和部署注册表项以强制实施此策略:
创建注册表项。您的新密钥应如下所示:
$ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop
创建多字符串值
allowedOrgs
.重要
从 Docker Desktop 版本 4.36 及更高版本开始,您可以添加多个组织。使用 Docker Desktop 版本 4.35 及更早版本时,如果添加多个组织登录,则强制登录将失败,且会以静默方式执行。
使用组织的名称,全部小写作为字符串数据。
重新启动 Docker Desktop。
当 Docker Desktop 重新启动时,验证是否显示 Sign in required!(需要登录!)提示。
在某些情况下,可能需要重新启动系统才能使实施生效。
注意
如果注册表项和
registry.json
file 都存在,则注册表项优先。
通过组策略进行部署示例
以下示例概述了如何部署注册表项以使用组策略在 Docker Desktop 上强制登录。有多种方法可以部署此配置,具体取决于您组织的基础设施、安全策略和管理工具。
- 创建注册表脚本。编写脚本以创建
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Docker\Docker Desktop
键中,添加allowedOrgs
multi-string,然后将值设置为您的组织名称。 - 在组策略中,创建或编辑适用于要作为目标的计算机或用户的组策略目标 (GPO)。
- 在 GPO 中,导航到 计算机配置 并选择 首选项.
- 选择 Windows 设置,然后选择注册表。
- 要添加注册表项,请右键单击 Registry 节点,选择 New (新建),然后选择 Registry Item(注册表项)。
- 配置新的注册表项以匹配您创建的注册表脚本,并将作指定为 Update。确保输入正确的路径、值名称 (
allowedOrgs
) 和 value data (您的组织名称)。 - 将 GPO 链接到包含要应用此设置的计算机的组织单位 (OU)。
- 首先在一小部分计算机上测试 GPO,以确保其行为符合预期。您可以使用
gpupdate /force
命令手动刷新其组策略设置并检查注册表以确认更改。 - 验证后,您可以继续进行更广泛的部署。监视部署以确保在组织的计算机上正确应用设置。
配置文件方法(仅限 Mac)
注意
配置文件方法处于早期访问阶段,可用于 Docker Desktop 版本 4.36 及更高版本。
配置文件是 macOS 的一项功能,可让您分发 配置信息发送到您管理的 Mac。这是最安全的方法 在 macOS 上强制登录,因为安装的配置文件是 受 Apple 的系统完整性保护 (SIP) 保护,因此不能 被用户篡改。
使用扩展名保存以下 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>
更改占位符
com.yourcompany.docker.config
和Your Company Name
添加到您的公司名称中。添加您的组织名称。允许的组织的名称存储在
allowedOrgs
财产。它可以包含单个组织的名称或组织名称列表。 用分号分隔:<key>allowedOrgs</key> <string>first_org;second_org</string>
使用 MDM 解决方案分发修改后的
.mobileconfig
文件发送到您的 macOS 客户端。
plist 方法(仅限 Mac)
注意
这
plist
方法适用于 Docker Desktop 版本 4.32 及更高版本。
要在 macOS 上强制登录 Docker Desktop,您可以使用plist
定义所需设置的文件。以下步骤将指导您完成创建和部署必要plist
文件以强制实施此策略:
创建文件
/Library/Application Support/com.docker.docker/desktop.plist
.打开
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 及更早版本时,如果添加多个组织,则登录强制作会失败,且不会提示。
修改文件权限以确保任何非管理员用户都无法编辑该文件。
重新启动 Docker Desktop。
当 Docker Desktop 重新启动时,验证是否显示 Sign in required!(需要登录!)提示。
注意
如果
plist
和registry.json
文件都存在,则plist
file 优先。
部署示例
以下示例概述了如何创建和分发plist
文件强制在 Docker Desktop 上登录。有多种方法可以部署此配置,具体取决于您组织的基础设施、安全策略和管理工具。
- 按照前面概述的步骤创建
desktop.plist
文件。 - 使用 Jamf 或 Fleet 等 MDM 工具分发
desktop.plist
file 设置为/Library/Application Support/com.docker.docker/
在目标 macOS 设备上。 - 通过 MDM 工具,将文件权限设置为仅允许管理员编辑。
- 创建一个 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 或其他管理员账户,确保未经授权的用户无法轻易修改。
- 导航到
- 在整个组织中部署脚本之前,请在本地 macOS 计算机上对其进行测试,以确保其行为符合预期。注意目录路径、权限以及
plist
设置。 - 确保您能够在 macOS 设备上远程执行脚本。这可能涉及设置 SSH 访问或使用支持 macOS 的远程支持工具。
- 使用适合您组织基础设施的远程脚本执行方法。选项包括:
- SSH:如果在目标计算机上启用了 SSH,则可以使用它来远程执行脚本。此方法需要了解设备的 IP 地址和相应的凭据。
- 远程支持工具:对于使用远程支持工具的组织,您可以将脚本添加到任务中,并在所有选定的计算机上执行该脚本。
- 确保脚本在所有目标设备上按预期运行。您可能必须检查日志文件或在脚本本身中实施日志记录,以报告其成功或失败。
registry.json 方法 (全部)
以下说明说明如何创建和部署registry.json
文件复制到单个设备。有多种方法可以部署registry.json
文件。您可以按照.plist
file 部分。您选择的方法取决于组织的基础设施、安全策略和最终用户的管理权限。
选项 1:创建 registry.json 文件以强制登录
确保用户是 Docker 中组织的成员。了解更多 详细信息,请参阅 管理成员。
创建
registry.json
文件。根据用户的作系统,创建一个名为
registry.json
,并确保用户无法编辑该文件。平台 位置 窗户 /ProgramData/DockerDesktop/registry.json
苹果电脑 /Library/Application Support/com.docker.docker/registry.json
Linux的 /usr/share/docker-desktop/registry/registry.json
在
registry.json
文件。打开
registry.json
文件并添加以下内容,其中myorg
将替换为您的组织名称。文件内容区分大小写,您必须使用小写字母作为组织名称。{ "allowedOrgs": ["myorg1", "myorg2"] }
重要
从 Docker Desktop 版本 4.36 及更高版本开始,您可以添加多个组织。使用 Docker Desktop 版本 4.35 及更早版本时,如果添加多个组织登录,则强制登录将失败,且会以静默方式执行。
验证是否强制登录。
要激活
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--
) 和所有权
(root
和admin
):
$ 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 及更早版本时,如果添加多个组织登录,则强制登录将失败,且会以静默方式执行。