docker - 从私有(private)注册表中提取失败 - 不支持的 docker v1 存储库请求

标签 docker kubernetes artifactory google-kubernetes-engine

我正在尝试使用私有(private)注册表 (Artifactory) 在我的 Kubernetes 集群 (1.9.7-gke.6) 上运行一个容器。

Failed to pull image "myrepo.myartifactory.mycompany.com/org/image:latest": rpc error: code = Unknown desc = Error: Status 400 trying to pull repository org/image: "{
\"errors\" :[ {
    \"status\" : 400,
    \"message\" : \"Unsupported docker v1 repository request for 'myrepo'\"\n  } ]
}"

我假设这意味着 docker 客户端尝试执行 v1 注册表请求,我们的 Artifactory 安装似乎不支持它。

我检查了集群节点的 docker 版本:

$ kubectl describe nodes | grep docker
 Container Runtime Version:  docker://17.3.2
 Container Runtime Version:  docker://17.3.2
 Container Runtime Version:  docker://17.3.2

我找到了 Docker 标志 --disable-legacy-registry=true 但我不确定如何以这种方式最好地配置我的 GKE 集群。

最佳答案

实际问题是我们的注册表凭据发生了变化。更新我们集群上的拉取凭据解决了这个问题。

我假设在注册表 API 返回错误(例如身份验证或授权错误)的某些情况下可能会发生此问题。如果是这种情况,docker 客户端会尝试降级到较旧的 API 版本——这在 Artifactory 上不可用。

这会导致 Artifactory 返回提到的 Unsupported docker v1 repository request for 'myrepo' 错误,不幸的是,这掩盖了实际错误。

关于docker - 从私有(private)注册表中提取失败 - 不支持的 docker v1 存储库请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730629/

相关文章:

mongodb - mongo db docker 镜像身份验证失败

docker - 从私有(private) nuget 源恢复 nuget 包 - Docker 给出错误

kubernetes - 无服务和回滚支持yaml的StatefulSet

kubernetes - 无法连接到集群。面对未知权威签署的证书

artifactory - AQL 构建域对象不返回结果

mysql - 无法连接到 LAMP docker 容器中的 MYSQL

kubernetes - 关于设置 pod 内存请求大小的建议

docker - 错误 : Unable to upload into a virtual repository without default local deployment configured (Docker artifactory)

java - 从artifactory中的jar生成pom文件?

docker - docker组成了nginx反向代理,未将容器添加到docker0网桥