authentication - 在 artifactory 中匿名拉取 docker repo

标签 authentication docker artifactory

我使用的是 artifactory 4.6 版,并且对 docker 注册表有以下要求。

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

我知道这在更高版本的 artifactory 上是开箱即用的。然而,升级暂时不是我们的选择。

以下工作是否有效?

  • 在端口 8443 上创建一个虚拟 docker 存储库并且不要强制身份验证,将其命名为 docker-virtual
  • 创建本地 docker 存储库并强制进行身份验证,在端口 8444
  • 上将其称为 docker-local |
  • 使用默认部署目录将“docker-virtual”配置为“docker-local”
    docker pull docker-virtual should work docker push docker-virtual should ask for credentials

  • 失败后,我应该可以 docker login docker-virtualdocker push docker-virtual/myImage

    最佳答案

    不确定 Artifactory 方面,但也许以下 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 的尝试都将失败。

    关于authentication - 在 artifactory 中匿名拉取 docker repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38310906/

    相关文章:

    java - 带有谷歌身份验证的 CircularRedirectException

    javascript - 我怎么能用javascript写这个短函数?

    docker - 从普罗米修斯那里抓取traefik指标

    amazon-web-services - 什么是 S3 默认被授予者 "Any Authenticated AWS user"和 "aws.(account alias)"

    asp.net - 保护返回 JSON 的 ASP.NET MVC Controller 操作

    branch - 如何并行运行Web项目的分支?

    docker - 从 docker 容器中结构化日志记录到日志

    maven - Artifactory 不删除唯一快照

    android - Android:使用Gradle解决对Artifactory的外部依赖

    artifactory - 将 Artifactory 中的特定构建提升到不同的存储库