我使用的是神器版本4.6,并且在docker注册表中有以下要求。
允许对docker存储库进行匿名提取 在SAME docker存储库上强制进行身份验证
我知道这可以在更高版本的神器中开箱即用。但是升级对我们来说暂时不是一个选择。
以下是否可以解决问题?
将“docker-virtual”配置为默认部署目录为“docker-local”
docker pull docker-virtual should work
docker push docker-virtual should ask for credentials
失败后,我应该能够停靠login docker-virtual
和docker push docker-virtual/myImage
答案 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失败(同时成功拉动)。