注册表访问管理
笔记
注册表访问管理仅适用于 Docker Business客户。
通过注册表访问管理 (RAM),管理员可以确保使用 Docker Desktop 的开发人员仅访问允许的注册表。这是通过 Docker Hub 或 Docker 管理控制台中的注册表访问管理仪表板完成的。
注册表访问管理支持云和本地注册表。此功能在 DNS 级别运行,因此与所有注册表兼容。您可以添加您想要包含在允许的注册表列表中的任何主机名或域名。但是,如果注册表重定向到其他域(例如 )s3.amazon.com
,则您必须将这些域添加到列表中。
注册表管理员可以允许的示例包括:
- Docker 中心。默认情况下启用此功能。
- 亚马逊ECR
- GitHub 容器注册表
- 谷歌容器注册表
- 亚搏体育appGitLab容器注册表
- 关系
- 人工工厂
先决条件
您需要 配置registry.json以强制登录。为了使注册表访问管理生效,Docker Desktop 用户必须向您的组织进行身份验证。
配置注册表访问管理权限
要配置注册表访问管理权限,请执行以下步骤:
登录 Docker Hub。
选择“组织”(您的组织),然后在“访问管理”菜单中选择“注册表访问”。
启用注册表访问管理以设置注册表的权限。
笔记
启用后,默认设置 Docker Hub 注册表,但您也可以为开发人员限制此注册表。
选择“添加注册表”并在适用的字段中输入您的注册表详细信息,然后选择“创建”将注册表添加到您的列表中。
验证注册表是否出现在您的列表中,然后选择“保存更改”。
笔记
添加注册表后,最多可能需要 24 小时才能在开发人员的计算机上实施更改。如果您想更快地应用更改,则必须在开发人员的计算机上强制 Docker 注销,并让开发人员重新对 Docker Desktop 进行身份验证。此外,您可以添加的注册表数量没有限制。请参阅下面的“注意事项”部分,了解有关使用此功能时的限制的更多信息。
提示
由于 RAM 设置了从哪里获取内容的策略,因此 Dockerfile 的ADD指令,当 ADD 指令的参数为 URL 时,也会受到注册表的限制。建议您将 URL 参数的域添加到组织的注册表访问管理设置下允许的注册表地址列表中。
抢先体验
Docker 管理控制台是一个 早期访问产品。
所有公司所有者和组织所有者都可以使用它。您仍然可以在 Docker Hub 中管理公司和组织,但管理控制台包含公司级管理的增强功能。
要配置注册表访问管理权限,请执行以下步骤:
登录 管理控制台。
选择“组织”(您的组织),然后在“访问管理”菜单中选择“注册表访问”。
启用注册表访问管理以设置注册表的权限。
笔记
启用后,默认设置 Docker Hub 注册表,但您也可以为开发人员限制此注册表。
选择“添加注册表”并在适用的字段中输入您的注册表详细信息,然后选择“创建”将注册表添加到您的列表中。
验证注册表是否出现在您的列表中,然后选择“保存更改”。
笔记
添加注册表后,最多可能需要 24 小时才能在开发人员的计算机上实施更改。如果您想更快地应用更改,则必须在开发人员的计算机上强制 Docker 注销,并让开发人员重新对 Docker Desktop 进行身份验证。此外,您可以添加的注册表数量没有限制。请参阅下面的“注意事项”部分,了解有关使用此功能时的限制的更多信息。
提示
由于 RAM 设置了从哪里获取内容的策略,因此 Dockerfile 的ADD指令,当 ADD 指令的参数为 URL 时,也会受到注册表的限制。建议您将 URL 参数的域添加到组织的注册表访问管理设置下允许的注册表地址列表中。
验证限制
新的注册表访问管理策略在开发人员使用其组织凭据成功通过 Docker Desktop 身份验证后生效。如果开发人员尝试通过 Docker CLI 从不允许的注册表中提取映像,他们会收到一条错误消息,表明组织已不允许使用此注册表。
注意事项
使用注册表访问管理时存在某些限制:
- 默认情况下,Windows 映像拉取和映像构建不受限制。为了使注册表访问管理在 Windows 容器模式下生效,您必须通过选择“ 为 Windows Docker 守护程序使用代理”设置来允许 Windows Docker 守护程序使用 Docker Desktop 的内部代理。
- 使用 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 的职权范围。