匿名拉神器中的码头回购

时间:2016-07-11 15:35:46

标签: authentication docker artifactory

我使用的是神器版本4.6,并且在docker注册表中有以下要求。

允许对docker存储库进行匿名提取 在SAME docker存储库上强制进行身份验证

我知道这可以在更高版本的神器中开箱即用。但是升级对我们来说暂时不是一个选择。

以下是否可以解决问题?

  1. 在端口8443上创建虚拟docker存储库并且不强制进行身份验证,将其命名为docker-virtual
  2. 创建本地docker存储库并强制进行身份验证,在端口8444上将其命名为docker-local
  3. 将“docker-virtual”配置为默认部署目录为“docker-local”

    docker pull docker-virtual should work docker push docker-virtual should ask for credentials

  4. 失败后,我应该能够停靠login docker-virtualdocker push docker-virtual/myImage

2 个答案:

答案 0 :(得分:3)

不确定神器方面,但也许以下Docker建议有帮助。

您可以在Docker中开始运行两个注册表,一个带有身份验证的RW,另一个没有任何身份验证的RO:

docker run -d -p 5000:5000 --restart=always --name registry \
  -v `pwd`/certs:/certs:ro \
  -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \
  -v `pwd`/registry:/var/lib/registry \
  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \
  -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=My Registry" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \
  registry:2

docker run -d -p 5001:5000 --restart=always --name registry-ro \
  -v `pwd`/certs:/certs:ro \
  -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \
  -v `pwd`/registry:/var/lib/registry:ro \
  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \
  -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \
  -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \
  registry:2

请注意每个容器中/ var / lib / registry的卷设置。然后从匿名注册表中提取,您只需要更改端口。由于文件系统是RO,任何推送到5001的尝试都将失败。

答案 1 :(得分:1)

你可以实现的最接近的事情就是在没有凭据的情况下使用docker push失败(同时成功拉动)。