在我们当前的设置中,我们是代理整个docker hub来拉取图像,但是我们想要将此代理限制为仅官方索引(如ubuntu,apache等)。
在配置存储库期间,有一个用于为存储库设置custom index
的选项,所以我的两个问题是:
custom index
选项,我将能够实现我上面解释的内容?https://hub.docker.com/_/centos/
用于centos,但是没有用。请提出解决方法。
答案 0 :(得分:0)
是的,您可以使用自定义索引来限制存储库中可用的内容。为此,您必须部署和维护自己的Docker注册表索引服务,并在配置Docker代理存储库时使用它。
但是,更简单的解决方案是使用内容选择器来限制允许通过Docker代理存储库访问的内容,同时仍将Docker Hub与原始索引一起使用。
使用简化的内容选择器解决方案有点麻烦,但可能对您有用。本质上,您必须以正则表达式的形式提供白名单(或黑名单)。此解决方案的含义是,您的注册表用户仍然可以搜索任何可用的映像,因为您可以继续使用Docker Hub的索引以简化操作。
path =~ '^/v2/library/(alpine|ubuntu).*$'
仅允许下载alpine
和ubuntu
。现在,您创建的用户应登录到您的注册表,例如。 $ docker login nexus.local:8085
。该用户将有权拉alpine
和ubuntu
(基于步骤2中的内容选择器),但将无法下载其他任何内容。
成功提取样本:
$ docker pull nexus.local:8085/alpine
Using default tag: latest
latest: Pulling from alpine
Digest: sha256:0873c923e00e0fd2ba78041bfb64a105e1ecb7678916d1f7776311e45bf5634b
Status: Image is up to date for nexus.local:8085/alpine:latest
样本失败拉取:
$ docker pull nexus.local:8085/postgres
Using default tag: latest
Error response from daemon: unauthorized: access to the requested resource is not authorized
答案 1 :(得分:0)
我们正在代理整个 docker hub 来拉取镜像,但我们想要的是将此代理限制为仅限官方索引,如 ubuntu、apache
我所做的是:
Mode:
ALLOW
alpine
和 centos
,所以我创建了两个匹配:
^/v2/library/centos.*$
^/v2/library/alpine.*$
Routing Rule
这样,除了 centos 和 alpine 之外的所有内容都可以从该 docker 代理存储库中获得。提取任何其他内容会导致 docker 出现“manigest unknown”错误。