强制登录桌面

默认情况下,组织的成员可以在不登录的情况下使用 Docker Desktop。当用户不以组织成员的身份登录时,他们不会获得 组织订阅的好处,并且可以规避 组织的Docker 安全功能

为了确保组织成员始终登录,您可以将 registry.json配置文件部署到用户的计算机。

如何强制登录?

当 Docker Desktop 启动并检测到registry.json文件时,会发生以下情况:

  • 需要以下登录!将出现提示,要求用户以组织成员身份登录才能使用 Docker Desktop。
    强制登录提示
  • 当用户登录不属于您组织成员的帐户时,他们将自动注销并且无法使用 Docker Desktop。用户可以选择“登录并重试”。
  • 当用户登录属于您组织成员的帐户时,他们可以使用 Docker Desktop。
  • 当用户退出时,需要登录!出现提示,他们无法再使用 Docker Desktop。

强制登录与强制 SSO

强制登录可确保用户需要登录才能使用 Docker Desktop。如果您的组织也使用单点登录 (SSO),您可以选择强制执行 SSO。这意味着您的用户必须使用 SSO 登录,而不是使用用户名和密码。当您强制登录并强制执行 SSO 时,您的用户必须登录并且必须使用 SSO 来执行此操作。有关如何为 SSO 连接启用此功能的详细信息,请参阅 强制 SSO 。

创建registry.json 文件以强制登录

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

  2. 创建registry.json文件。

    根据用户的操作系统,registry.json在以下位置创建一个名为的文件,并确保该文件不能被用户编辑。

    平台地点
    Windows/ProgramData/DockerDesktop/registry.json
    苹果/库/应用程序支持/com.docker.docker/registry.json
    Linux/usr/share/docker-desktop/registry/registry.json
  3. 在文件中指定您的组织registry.json

    在文本编辑器中打开该registry.json文件并添加以下内容,其中myorg替换为您的组织名称。文件内容区分大小写,您的组织名称必须使用小写字母。

    {
    "allowedOrgs": ["myorg"]
    }
  4. 验证是否强制执行登录。

    要激活该registry.json文件,请在用户计算机上重新启动 Docker Desktop。当 Docker Desktop 启动时,验证是否需要登录!出现提示。

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

    提示

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

创建registry.json 文件的替代方法

您还可以使用以下替代方法来创建文件registry.json

从 Docker Hub 下载registry.json 文件

在 Docker Hub 中,您可以下载registry.json适合您的组织的文件或复制特定命令来为您的组织创建文件。要下载文件或复制命令,请使用以下步骤。

  1. 以组织所有者身份登录 Docker Hub 。

  2. 转至组织>您的组织>设置

  3. 选择强制登录并继续按照 Windows、Mac 或 Linux 屏幕上的说明进行操作。

安装 Docker Desktop 时创建registry.json 文件

要在安装 Docker Desktop 时创建registry.json文件,请根据用户的操作系统使用以下说明。


registry.json在安装 Docker Desktop 时自动创建文件,请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

registry.json在安装 Docker Desktop 时自动创建文件,请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

使用命令行创建registry.json文件

要使用命令行创建registry.json,请根据用户的操作系统使用以下说明。


要使用 CLI 创建registry.json文件,请以管理员身份运行以下 PowerShell 命令并替换myorg为您的组织名称。文件内容区分大小写,您的组织名称必须使用小写字母。

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...

要使用 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

要使用 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包含用户所属的组织信息。确保该文件具有预期的内容,并且用户无法编辑该文件,只有 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

将registry.json部署到多个设备

前面的说明解释了如何创建registry.json文件并将其部署到单个设备。要自动部署registry.json到多个设备,您必须使用第三方解决方案,例如移动设备管理解决方案。您可以使用前面的说明以及第三方解决方案来远程部署该registry.json文件,或者使用该文件远程安装 Docker Desktop registry.json。有关更多详细信息,请参阅第三方解决方案的文档。