注册表访问管理

注意

Registry Access Management 仅适用于 Docker Business 客户。

借助 Registry Access Management (RAM),管理员可以确保使用 Docker Desktop 的开发人员只能访问允许的注册表。这是通过 Docker Hub 或 Docker Admin Console 中的 Registry Access Management 控制面板完成的。

Registry Access Management 支持云和本地注册表。此功能在 DNS 级别运行,因此与所有注册管理机构兼容。您可以添加任何要包含在允许的注册管理机构列表中的主机名或域名。但是,如果注册表重定向到其他域(如 ),则必须将这些域添加到列表中。s3.amazon.com

管理员可以允许的注册管理机构示例包括:

  • Docker Hub 的 Docker Hub 中。默认情况下,此选项处于启用状态。
  • 亚马逊 ECR
  • GitHub 容器注册表
  • Google 容器注册表
  • GitLab 容器镜像库
  • 关系
  • Artifactory 公司

先决条件

您需要强制登录。对于注册表访问 管理要生效,Docker Desktop 用户必须向 组织。强制登录可确保 Docker Desktop 开发人员 始终向组织进行身份验证,即使他们可以进行身份验证 没有它,该功能将生效。强制登录可保证 功能始终生效。

配置 Registry Access Management 权限


要配置 Registry Access Management 权限,请执行以下步骤:

  1. 登录到 Docker Hub

  2. 选择 Organizations(组织)、您的组织、Settings(设置),然后选择 Registry Access(注册表访问)。

  3. 启用 Registry Access Management 以设置注册表的权限。

    注意

    启用后,Docker Hub 注册表是默认设置的,但您也可以为开发人员限制此注册表。

  4. 选择 Add registry 并在适用的字段中输入注册表详细信息,然后选择 Create 将注册表添加到您的列表中。您可以添加的注册表数量没有限制。

  5. 验证注册表是否显示在您的列表中,然后选择 Save changes(保存更改)。

添加注册表后,最多可能需要 24 小时才能在开发人员的计算机上强制实施更改。

如果要更快地应用更改,则必须在开发人员的计算机上强制 Docker 注销,并让开发人员重新验证 Docker Desktop。请参阅下面的 注意事项 部分,了解有关使用此功能时的限制的更多信息。

重要

从 Docker Desktop 版本 4.36 开始,您可以为多个组织强制登录。如果开发人员属于具有不同 RAM 策略的多个组织,则仅强制执行文件、文件或注册表项中列出的第一个组织的 RAM 策略。registry.json.plist

提示

由于 RAM 设置了有关可从何处获取内容的策略,因此当 ADD 指令的参数为 URL 时,Dockerfile 的 ADD 指令也会受到注册表限制。建议您将 URL 参数的域添加到组织的 Registry Access Management 设置下的允许的注册表地址列表中。

抢先体验

Docker Admin Console 是一种早期访问产品。

它适用于所有公司所有者和组织所有者。您仍然可以在 Docker Hub 中管理组织,但 Admin Console 包括公司级别的管理和组织的增强功能。

要配置 Registry Access Management 权限,请执行以下步骤:

  1. 登录到 Admin Console

  2. 在左侧导航下拉菜单中选择您的组织,然后选择 Registry access (注册表访问权限)。

  3. 启用 Registry Access Management 以设置注册表的权限。

    注意

    启用后,Docker Hub 注册表是默认设置的,但您也可以为开发人员限制此注册表。

  4. 选择 Add registry 并在适用的字段中输入注册表详细信息,然后选择 Create 将注册表添加到您的列表中。您可以添加的注册表数量没有限制。

  5. 验证注册表是否显示在您的列表中,然后选择 Save changes(保存更改)。

添加注册表后,最多可能需要 24 小时才能在开发人员的计算机上强制实施更改。

如果要更快地应用更改,则必须在开发人员的计算机上强制 Docker 注销,并让开发人员重新验证 Docker Desktop。请参阅下面的 注意事项 部分,了解有关使用此功能时的限制的更多信息。

重要

从 Docker Desktop 版本 4.36 开始,您可以为多个组织强制登录。如果开发人员属于具有不同 RAM 策略的多个组织,则仅强制执行文件、文件或注册表项中列出的第一个组织的 RAM 策略。registry.json.plist

提示

由于 RAM 设置了有关可从何处获取内容的策略,因此当 ADD 指令的参数为 URL 时,Dockerfile 的 ADD 指令也会受到注册表限制。建议您将 URL 参数的域添加到组织的 Registry Access Management 设置下的允许的注册表地址列表中。


验证限制

新的注册表访问管理策略在开发人员使用其组织凭证成功向 Docker Desktop 进行身份验证后生效。如果开发人员尝试通过 Docker CLI 从不允许的注册表中提取镜像,他们会收到一条错误消息,指出组织已禁止此注册表。

警告

使用 Registry Access Management 时存在某些限制:

  • 默认情况下,Windows 镜像拉取和镜像生成不受限制。要使注册表访问管理在 Windows 容器模式下生效,您必须通过选择对 Windows Docker 守护程序使用代理设置来允许 Windows Docker 守护程序使用 Docker Desktop 的内部代理。
  • 使用 Kubernetes 驱动程序等构建不受限制docker buildx
  • 使用自定义 docker-container 驱动程序等构建不受限制docker buildx
  • 阻止是基于 DNS 的;您必须使用注册表的访问控制机制来区分 “push” 和 “pull”
  • WSL 2 至少需要 5.4 系列 Linux 内核(这不适用于早期的 Linux 内核系列)
  • 在 WSL 2 网络下,来自所有 Linux 发行版的流量都受到限制(这将在更新的 5.15 系列 Linux 内核中得到解决)
  • 默认情况下,即使 Docker Hub 被 RAM 阻止,在启用 Docker Debug 或 Kubernetes 时由 Docker Desktop 拉取的镜像也不会受到限制。

此外,Registry Access Management 在主机级别运行,而不是在 IP 地址级别运行。开发人员可以在其域解析中绕过此限制,例如,通过针对本地代理运行 Docker 或修改其操作系统的文件。阻止这些形式的操作超出了 Docker Desktop 的职权范围。sts

更多资源