注册表访问管理

注意

注册表访问管理仅适用于 Docker Business 客户。

借助注册表访问管理 (RAM),管理员可以确保使用 Docker Desktop 的开发人员仅访问允许的注册表。这可以通过 Docker Hub 中的注册表访问管理仪表板或 Docker 管理控制台完成。

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

管理员可以允许的示例注册表包括

  • Docker Hub。默认情况下启用。
  • Amazon ECR
  • GitHub Container Registry
  • Google Container Registry
  • GitLab Container Registry
  • Nexus
  • Artifactory

先决条件

您需要 配置 registry.json 以强制登录。为了使注册表访问管理生效,Docker Desktop 用户必须向您的组织进行身份验证。

配置注册表访问管理权限


要配置注册表访问管理权限,请执行以下步骤

  1. 登录 Docker Hub

  2. 选择组织、您的组织、设置,然后选择注册表访问

  3. 启用注册表访问管理以设置注册表的权限。

    注意

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

  4. 选择添加注册表,并在相应的字段中输入您的注册表详细信息,然后选择创建将注册表添加到您的列表中。

  5. 验证注册表是否出现在您的列表中,然后选择保存更改

    注意

    添加注册表后,更改可能需要长达 24 小时才能在您的开发人员的机器上生效。如果要更快地应用更改,则必须在您的开发人员的机器上强制执行 Docker 注销,并让开发人员重新对 Docker Desktop 进行身份验证。此外,您可以添加的注册表数量没有限制。请参阅下面的注意事项部分,了解使用此功能时的限制。

    提示

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

抢先体验版

Docker 管理控制台是 抢先体验版 产品。

它适用于所有公司所有者和组织所有者。您仍然可以在 Docker Hub 中管理公司和组织,但管理控制台包含增强功能以用于公司级管理。

要配置注册表访问管理权限,请执行以下步骤

  1. 登录 管理控制台

  2. 在左侧导航下拉菜单中选择您的组织,然后选择注册表访问

  3. 启用注册表访问管理以设置注册表的权限。

    注意

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

  4. 选择添加注册表,并在相应的字段中输入您的注册表详细信息,然后选择创建将注册表添加到您的列表中。

  5. 验证注册表是否出现在您的列表中,然后选择保存更改

    注意

    添加注册表后,更改可能需要长达 24 小时才能在您的开发人员的机器上生效。如果要更快地应用更改,则必须在您的开发人员的机器上强制执行 Docker 注销,并让开发人员重新对 Docker Desktop 进行身份验证。此外,您可以添加的注册表数量没有限制。请参阅下面的注意事项部分,了解使用此功能时的限制。

    提示

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


验证限制

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

注意事项

使用注册表访问管理时存在某些限制

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

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

更多资源