尝试推送到我的私人存储库时,我不断收到404错误。 为什么?

我做了一个registry完全如何在docker文件中说,由于某种原因,当我尝试推送一个图像,它会抛出一个404错误在我身上。

这里是错误Error: Status 404 trying to push repository stelasite: "404 page not found\n"

而在服务器端,这11/8/2015 6:33:00 PM173.12.71.226 - - [08/Nov/2015:23:33:00 +0000] "GET /v2/ HTTP/1.1" 401 87 "" "docker/1.8.2-fc22 go/go1.5.1 kernel/4.2.3-200.fc22.x86_64 os/linux arch/amd64" 11/8/2015 6:33:05 PM173.12.71.226 - - [08/Nov/2015:23:33:05 +0000] "PUT /v1/repositories/stelasite/ HTTP/1.1" 404 19 "" "docker/1.8.2-fc22 go/go1.5.1 kernel/4.2.3-200.fc22.x86_64 os/linux arch/amd64"

有谁知道发生了什么事? 显然它不能连接到v1 api,但我不知道为什么dockercli甚至会尝试。

我有同样的问题,并通过让我的本地docker环境,以解决它。

我的问题的原因是我的Docker客户端太旧,或者我的Docker客户端(1.7.1)和docker-machine VM(1.8.1)之间的docker版本不匹配。 我有一个版本不匹配,因为我创build了虚拟机,然后降级我的docker客户端。 registry上的访问日志表示客户端是1.8.1,即使我的主机系统有1.7.1。 我删除了docker-machine虚拟机( docker-machine rm <environment name> ),然后卸载Docker并通过Homebrew重新安装1.10.0。

如果您在负载均衡器后面运行多个Dockerregistry,则另一个可能导致推送问题的事情是HTTP秘密不匹配。 你需要使用环境variablesREGISTRY_HTTP_SECRET将它们全部设置为相同的东西,或者像这样在configuration文件中:

 http: secret: mysecret 

我从2013年看到一篇博客文章,声称这个秘密需要长达64个字符,但我没有在文档中看到

当registry机器响应非常慢时,我有同样的错误。 在我的情况下,这是一个DNS服务器的问题。

改变DNS服务器,再次推进工作。 您可以通过ping分发服务器来testing它,看看响应速度是非常慢还是parsing主机名。

如果使用–debug运行docker,则这是来自日志的输出:

 DEBU[0013] Calling POST /images/{name:.*}/push INFO[0013] POST /v1.20/images/docker-distribution.company.net:5000/nginx/push?tag= DEBU[0023] hostDir: /etc/docker/certs.d/docker-distribution.company.net:5000 DEBU[0033] Trying to push docker-distribution.company.net:5000/nginx to https://docker-distribution.company.net:5000 v2 DEBU[0038] Error getting v2 registry: Get https://docker-distribution.company.net:5000/v2/: net/http: request canceled while waiting for connection DEBU[0038] Trying to push docker-distribution.company.net:5000/nginx to https://docker-distribution.company.net:5000 v1 DEBU[0038] hostDir: /etc/docker/certs.d/docker-distribution.company.net:5000 DEBU[0038] attempting v2 ping for registry endpoint https://docker-distribution.company.net:5000/v2/ DEBU[0043] Endpoint https://docker-distribution.company.net:5000/v2/ is eligible for private registry. Enabling decorator. 

您可以看到错误是“请求在等待连接时被取消”。