Docker注册表和索引

Docker注册表和索引,docker,docker-registry,Docker,Docker Registry,你好 我已经看了很多关于docker注册表的信息,但仍然有一些关于它的问题。。。请帮助我了解一些关于索引和注册表的事情 我已经为私有存储库安装了docker注册表。我使用的是独立模式true。据我所知,docker注册表无法对用户进行身份验证—它要求索引提供权限和身份验证。所以,我禁用了独立模式,所以docker注册表需要通过index.docker.io对我进行身份验证,但它不起作用-注册表允许我推拉任何想要的图像。所以问题是-为什么docker注册表不尝试通过i验证我 index.docke

你好

我已经看了很多关于docker注册表的信息,但仍然有一些关于它的问题。。。请帮助我了解一些关于索引和注册表的事情

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

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

  • Docker在索引中搜索。所以,如果我想在我的私有存储库中搜索我的图像,我需要告诉index.docker.io有一个新的私有存储库。是真的还是我说错了什么

  • 我在github找到了docker索引项目-。它是index.docker.io的替代品。所以,如果我安装它,登录到它,docker search命令会通过我的私有索引或index.docker.io进行搜索吗

  • UPD

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

  • 如果独立模式为true,则在中不使用disable_token_auth 任何变体。因此,我们可以:

    1.1在未经授权的情况下使用本回购协议(向任何人提供推拉权限)

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

  • 如果standalone mode为false,则docker注册表需要与index.docker.io进行通信,但实际情况并非如此。两种变体:

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

    2.2。如果disable_auth_token为false-我得到405错误


  • 对于2.1和2.2 docker登录my.registry.com不工作-显示404错误。。。也许是我的配置错误?

    Docker注册表管理Docker图像。Docker索引管理身份验证。 Docker注册表是,而Docker索引不是开源的

    如果部署docker注册表,则必须对其实施身份验证


    Docker index可以为您提供私有Docker注册表,请检查。

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

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

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

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

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

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

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

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

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

    • 您可以推/拉/搜索的原因是,您可能告诉docker client仅通过指定域名:port/image\u name在您的私有注册表中执行这些操作,即使默认情况下未指定并使用docker Hub,您也不会遇到身份验证问题,除非您尝试推送映像

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

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

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

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

    • Docker private registry仅提供登录(借助反向代理)。如果您想要一个完整的基于用户的身份验证/授权或访问控制系统,您可以考虑像Artifactory或core OS enterprise registry这样的解决方案

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

    • Docker客户端sea
      curl -s -X GET http://private.repo.domain:5000/v1/search | jq '.results[].name'
      
      docker search private.repo.domain:5000/<search_keyword>