美好的一天!
我看了很多关于docker注册表的信息,但仍然有一些问题...请帮助我理解关于索引和注册表的一些事情。
我已为私有存储库安装了docker-registry。我使用独立模式是真的。据我所知,docker注册表无法对用户进行身份验证 - 它会要求索引权限和身份验证。因此,我禁用了独立模式,因此docker-registry需要通过index.docker.io对我进行身份验证,但它不起作用 - 注册表允许我推送和拉出我想要的任何图像。所以问题是 - 为什么docker-registry不会尝试通过i对我进行身份验证 index.docker.io?
如果docker-registry通过index.docker.io对我进行身份验证,那么存储授权参数的位置是什么?我的意思是,如果我想授予用户vozerov仅推送到private.repo.domain:5000 / vozerov存储库。
Docker搜索索引。因此,如果我想在我的私有存储库中搜索我的图像,我需要告诉index.docker.io有新的私有存储库。它是真的还是我说错了?
我在github找到了docker-index项目 - https://github.com/ekristen/docker-index。它是index.docker.io的替代品。那么,如果我安装它,登录它,docker搜索命令搜索我的私有索引或通过index.docker.io?
UPD :
今晚我在docker-registry上工作了很多,所以我有点困惑:
如果独立模式为true,则不使用disable_token_auth 任何变种。所以我们可以:
1.1使用此repo而不使用auth(对所有人提取和推送权限)。
1.2使用nginx和docker登录my.registry.com的基本身份验证,因此每个拥有基本身份验证信息的用户都可以推送。因此,我们在这种模式下没有授权。
如果独立模式为false,则docker-registry需要与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错误......也许这是我的错误配置?
答案 0 :(得分:1)
1.我已为私有存储库安装了docker-registry。我使用独立模式是真的。据我所知,docker注册表无法对用户进行身份验证 - 它会要求索引权限和身份验证。因此,我禁用了独立模式,因此docker-registry需要通过index.docker.io对我进行身份验证,但它不起作用 - 注册表允许我推送和拉出我想要的任何图像。所以问题是 - 为什么docker-registry没有尝试通过i index.docker.io来验证我?
您设置的私有docker注册表没有身份验证,因为您没有设置它。您必须使用nginx作为反向代理来设置身份验证,并且由于docker客户端不支持没有SSL的基本身份验证,您还必须在反向代理上设置SSL。
当您推或拉时,您正在使用泊坞窗客户端。它可以连接到您设置的任何注册表,私有注册表以及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"是您的基本64位编码(用户名:密码)凭据
Docker私有注册表仅提供登录(在反向代理的帮助下)。如果您想要一个完整的基于用户的身份验证/授权或访问控制系统,您可以查看Artifactory或核心OS企业注册表等解决方案
3.Docker搜索索引。因此,如果我想在我的私有存储库中搜索我的图像,我需要告诉index.docker.io有新的私有存储库。它是真的还是我说错了?
使用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找到了docker-index项目 - https://github.com/ekristen/docker-index。它是index.docker.io的替代品。那么,如果我安装它,登录它,docker搜索命令搜索我的私有索引还是通过index.docker.io?
答案 1 :(得分:0)
如果您想要对您的私人注册表进行身份验证(和加密),那么您需要将nginx或apache作为代理放在docker前面,并在那里使用http身份验证和SSL终止。
据我所知,没有办法让docker搜索命令搜索您的私人注册表。该命令仅搜索Docker Hub。
答案 2 :(得分:-1)
Docker注册表管理docker-images。 Docker索引管理身份验证。 Docker注册表是open source,而Docker索引不是开源的。
如果部署docker-registry,则必须对其进行身份验证。
Docker索引可以为您提供私有的docker-registry,请检查this。