Dockerregistry和索引

美好的一天!

我已经看了很多关于dockerregistry的信息,仍然有一些关于它的问题…请帮助我了解一些关于索引和registry的事情。

  1. 我已经安装了专用存储库的docker-registry。 而且我使用独立模式true。 据我所知,dockerregistry不能validation用户 – 索引权限和身份validation。 所以,我禁用独立模式,所以dockerregistry需要通过index.docker.io来validation我,但它不工作 – registry允许我推和拉我想要的任何图像。 所以问题是 – 为什么dockerregistry不尝试通过我index.docker.ioauthentication我?

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

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

  4. 我在github上find了docker-index项目 – https://github.com/ekristen/docker-index 。 这是index.docker.io的替代方法。 所以,如果我安装它,login到它,dockersearch命令search通过我的私人索引或通过index.docker.io?

UPD

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

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

    1.1使用此回购没有身份validation(拉和推权给任何人)。

    1.2使用基本身份validation与Nginx和dockerloginmy.registry.com,所以每个具有基本身份validation信息的用户可以推和拉。 所以我们没有这个模式的授权。

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

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

    2.2。 如果disable_auth_token为假 – 我得到405错误…

而对于2.1和2.2dockerloginmy.registry.com不工作 – 它显示我404错误…也许这是我的configuration错误?

1.我已经为私人存储库安装了docker-registry。 而且我使用独立模式true。 据我所知,dockerregistry不能validation用户 – 索引权限和身份validation。 所以,我禁用独立模式,所以dockerregistry需要通过index.docker.io来validation我,但它不工作 – registry允许我推和拉我想要的任何图像。 所以问题是 – 为什么dockerregistry不尝试通过我index.docker.ioauthentication我?

您设置的私人dockerregistry没有身份validation,因为您没有设置它。 您必须使用nginx作为反向代理来设置身份validation,并且由于docker客户端不支持没有SSL的基本身份validation,所以您还必须在反向代理上设置SSL。

当你推或拉,你正在使用docker客户端。 它可以连接到任何registry,您设置的私人registry以及docker中心。 这里有几点需要考虑:

  • 当您从docker客户端发起dockersearch时,默认情况下将searchdocker中心,并且只要它是公开的就可以从那里拉取任何图像。

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

  • 现在,如果你想search你的私人dockerregistry,你必须告诉docker客户端以下列格式search该registry:

    docker search private.repo.domain:5000/vozerov 
  • 现在,根据您真正想要search哪个registry,如果您使用反向代理进行设置,您的私有registry将需要它自己的身份validation,如果要使用它来推送图像,Docker中心会要求您login。

  • 您可以推/拉/search的原因是因为您可能只是通过指定domain_name:port / image_name来告诉docker客户端在私有registry中执行这些操作,即使您默认情况下未指定和使用Docker Hub,您除非您尝试推送图像,否则不会遇到身份validation问题。

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

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

  • 在该文件中,您可以find您尝试成功login的注册pipe理机构的login凭证详细信息:

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

  • Docker私人registry只提供login(在反向代理的帮助下)。 如果你想要一个完整的基于用户的authentication/授权或访问控制系统,你可以看看像Artifactory或核心操作系统企业注册

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

  • 如果您没有指定您希望它search您的私人registry,Docker客户端将通过index.io进行search。 这是docker的默认行为。 您的私人dockerregistry与官方docker索引是完全分开的,根本就没有任何关系。 如果你想在你的Docker客户端中search你的私有registry,下面是一些你可以使用的命令,native或者curl:
  • 使用curl(apt-get install jq):

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

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

4.我在github上find了docker-index项目 – https://github.com/ekristen/docker-index 。 这是index.docker.io的替代方法。 所以,如果我安装它,login到它,dockersearch命令search通过我的私人索引或通过index.docker.io?

  • 看起来这个项目即将停止,因为Docker正在推出一个新的registry。 从来没有真正尝试过,所以我不知道它search哪个registry。 我会认为这是你与私人registry集成的东西,因为Docker Hub已经有它自己的索引,所以如果我猜测,它会search你的私人registry。

如果你想authentication(和encryption)到你的私人registry,那么你将需要把nginx或者apache放在docker前面作为代理,并且在那里使用httpauthentication和SSL终止。

据我所知,没有办法让泊坞窗search命令search你的私人registry。 该命令只searchDocker Hub。

Dockerregistrypipe理docker-images。 Docker索引pipe理身份validation。 Dockerregistry是开源的 ,而Docker索引不是开源的。

如果您部署docker-registry,则必须对其执行身份validation。

docker索引可以为您提供私人dockerregistry,检查这一点 。