13

再会!

我查看了大量有关 docker 注册表的信息,但仍有一些问题……请帮助我了解有关索引和注册表的一些信息。

  1. 我已经为私有存储库安装了 docker-registry。我在独立模式下工作。据我了解,docker 注册表无法对用户进行身份验证 - 它要求索引获取权限和身份验证。所以,我禁用了独立模式,所以 docker-registry 需要通过 index.docker.io 对我进行身份验证,但它不起作用 - 注册表允许我推送和拉取任何我想要的图像。所以问题是 - 为什么 docker-registry 不尝试通过 i index.docker.io 对我进行身份验证?

  2. 如果 docker-registry 通过 index.docker.io 对我进行身份验证,那么授权参数存储在哪里?我的意思是,如果我想授予用户 vozerov 仅推送到 private.repo.domain:5000/vozerov 存储库。

  3. Docker 通过索引进行搜索。因此,如果我想在我的私有存储库中搜索我的图像,我需要告诉 index.docker.io 有新的私有存储库。是真的还是我说错了?

  4. 我在 github - https://github.com/ekristen/docker-index找到了 docker-index 项目。它是 index.docker.io 的替代品。所以,如果我安装它,登录它,docker search 命令会通过我的私有索引还是通过 index.docker.io 搜索?

更新

今晚我在 docker-registry 上工作了很多,所以我有点困惑:

  1. 如果独立模式为真,则 disable_token_auth 不会在任何变体中使用。所以我们可以:

    1.1 在没有身份验证的情况下使用此 repo(向任何人拉取和推送权利)。

    1.2 使用 nginx 和 docker login my.registry.com 的基本身份验证,因此每个拥有基本身份验证信息的用户都可以推送和拉取。所以,我们在这种模式下没有授权。

  2. 如果独立模式为 false,则 docker-registry 需要与 index.docker.io 通信,但不需要。两种变体:

    2.1。如果 disable_auth_token 为真 - 我得到 405 错误(方法不允许),但这意味着我允许任何人推送或拉取图像,或者不允许?

    2.2. 如果 disable_auth_token 为 false - 我收到 405 错误...

对于 2.1 和 2.2 docker login my.registry.com 不起作用 - 它显示 404 错误...也许是我的配置错误?

4

3 回答 3

1

1.我已经为私有仓库安装了 docker-registry。我在独立模式下工作。据我了解,docker 注册表无法对用户进行身份验证 - 它要求索引获取权限和身份验证。所以,我禁用了独立模式,所以 docker-registry 需要通过 index.docker.io 对我进行身份验证,但它不起作用 - 注册表允许我推送和拉取任何我想要的图像。所以问题是 - 为什么 docker-registry 不尝试通过 i index.docker.io 对我进行身份验证?

您设置的私有 docker 注册表没有身份验证,因为您没有设置它。您必须使用 nginx 作为反向代理来设置身份验证,并且由于 docker 客户端不支持没有 SSL 的基本身份验证,因此您还必须在反向代理上设置 SSL。

当你推或拉时,你正在使用 docker 客户端。它可以连接到任何注册表、您设置的私有注册表以及 docker hub。这里有几点需要考虑:

  • 当您从 docker 客户端启动 docker 搜索时,默认情况下它将搜索 docker hub,并允许您从那里提取任何图像,只要它是公共的。

  • 需要登录才能在 Docker Hub 中推送图像。

  • 现在,如果您想搜索您的私有 docker 注册表,您必须告诉 docker 客户端以以下格式搜索该注册表:

      docker search private.repo.domain:5000/vozerov 
    
  • 现在,根据您实际要搜索的注册表,如果您使用反向代理进行设置,您的私有注册表将需要它自己的身份验证,如果您想使用它来推送图像,docker hub 也将要求您登录。

  • 您可以推送/拉取/搜索的原因是因为您可能仅通过指定 domain_name:port/image_name 来告诉 docker 客户端在您的私有注册表中执行这些操作,即使您没有指定并默认使用 Docker Hub,您除非您尝试推送图像,否则不会遇到身份验证问题。

2.如果docker-registry通过index.docker.io对我进行认证,那么授权参数存放在哪里?我的意思是,如果我想授予用户 vozerov 仅推送到 private.repo.domain:5000/vozerov 存储库。

  • 授权参数存储在您的 docker 客户端计算机上的以下文件中(它是一个隐藏文件,因此请使用 ls -la)。文件名为:“.dockercfg”

  • 在该文件中,您可以找到您尝试成功登录的注册表的登录凭据详细信息:

    {
            "your_domain.com": {
                    "auth": "dXNlcjE6cGFzc3dvcmQxMjM="
                    "email": ""
    }
    
  • “auth”是您的 base 64 编码(用户名:密码)凭据

  • Docker 私有注册表仅提供登录(借助反向代理)。如果您想要一个完整的基于用户的身份验证/授权或访问控制系统,您可以查看 Artifactory 或核心操作系统企业注册表等解决方案

3.Docker通过索引搜索。因此,如果我想在我的私有存储库中搜索我的图像,我需要告诉 index.docker.io 有新的私有存储库。是真的还是我说错了?

  • 如果您未指定希望它搜索您的私有注册表,则 Docker 客户端通过 index.io 搜索。这是 docker 的默认行为。您的私有 docker 注册表与官方 docker 索引完全分开,与它无关。如果你想在你的 Docker 客户端中搜索你的私有注册表,这里有一些你可以使用的命令,本机或 curl:
  • 使用 curl (apt-get install jq):

    curl -s -X GET http://private.repo.domain:5000/v1/search | jq '.results[].name'
    
  • 使用泊坞窗搜索:

    docker search private.repo.domain:5000/<search_keyword>
    

4.我在 github - https://github.com/ekristen/docker-index找到了 docker-index 项目。它是 index.docker.io 的替代品。所以,如果我安装它,登录它,docker search 命令会通过我的私有索引还是通过 index.docker.io 搜索?

  • 随着 Docker 推出新的注册表,该项目似乎即将停止。从来没有真正尝试过,所以我不知道它搜索哪个注册表。我会假设它是您与私有注册表集成的东西,因为 Docker Hub 已经拥有自己的索引,所以如果我猜测一下,它会搜索您的私有注册表。
于 2015-04-07T23:49:47.870 回答
0

如果您想要对您的私有注册表进行身份验证(和加密),那么您需要将 nginx 或 apache 作为代理放在 docker 前面,并在那里使用 http 身份验证和 SSL 终止。

据我所知,没有办法让 docker search 命令搜索您的私有注册表。该命令仅搜索 Docker Hub。

于 2015-04-02T20:22:44.490 回答
0

Docker 注册表管理 docker-images。Docker 索引管理身份验证。Docker Registry 是开源的,而 Docker index 不是开源的。

如果您部署 docker-registry,则必须对其进行身份验证。

Docker 索引可以为您提供私有 docker-registry,请查看.

于 2014-08-19T18:38:10.050 回答