使用Sonatype nexus

时间:2018-07-04 05:15:33

标签: docker nexus sonatype

在我们当前的设置中,我们是代理整个docker hub来拉取图像,但是我们想要将此代理限制为仅官方索引(如ubuntu,apache等)。 在配置存储库期间,有一个用于为存储库设置custom index的选项,所以我的两个问题是:

  • 使用此custom index选项,我将能够实现我上面解释的内容?
  • 如果是,那么我应该从那里获取自定义索引的URL。到目前为止,我尝试将https://hub.docker.com/_/centos/用于centos,但是没有用。

请提出解决方法。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用自定义索引来限制存储库中可用的内容。为此,您必须部署和维护自己的Docker注册表索引服务,并在配置Docker代理存储库时使用它。

但是,更简单的解决方案是使用内容选择器来限制允许通过Docker代理存储库访问的内容,同时仍将Docker Hub与原始索引一起使用。

使用简化的内容选择器解决方案有点麻烦,但可能对您有用。本质上,您必须以正则表达式的形式提供白名单(或黑名单)。此解决方案的含义是,您的注册表用户仍然可以搜索任何可用的映像,因为您可以继续使用Docker Hub的索引以简化操作。

  1. 创建一个指向Docker Hub的Docker代理存储库。
  2. 使用黑白图像列表创建内容选择器,例如path =~ '^/v2/library/(alpine|ubuntu).*$'仅允许下载alpineubuntu
  3. 创建存储库内容选择器类型的新特权。
  4. 创建一个包含上述特权的角色。
  5. 创建具有上述角色的用户。

现在,您创建的用户应登录到您的注册表,例如。 $ docker login nexus.local:8085。该用户将有权拉alpineubuntu(基于步骤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
    • 我只想要 alpinecentos,所以我创建了两个匹配:
      • ^/v2/library/centos.*$
      • ^/v2/library/alpine.*$
  • 转到 docker 代理存储库的配置
    • 转到Routing Rule
    • 然后选择您创建的路由规则。

这样,除了 centos 和 alpine 之外的所有内容都可以从该 docker 代理存储库中获得。提取任何其他内容会导致 docker 出现“manigest unknown”错误。