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

时间:2015-11-08 23:34:26

标签: docker docker-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,但我不知道为什么docker cli会尝试。

2 个答案:

答案 0 :(得分:1)

我有同样的问题,并通过按顺序获取我的本地docker环境来解决它。

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

如果您在负载均衡器后面运行多个Docker注册表,那么可能导致推送问题的另一个原因是HTTP机密不匹配。您需要使用环境变量REGISTRY_HTTP_SECRET或者在配置文件中将它们显式设置为相同的东西:

http:
    secret: mysecret

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

答案 1 :(得分:0)

当注册表机器响应非常慢时,我遇到了同样的错误。就我而言,这是一个dns服务器的问题。

更改dns服务器,再次推送工作。您可以通过ping分发服务器来测试它,看看它是否响应或解析主机名的速度很慢。

如果使用--debug运行docker,则这是logs的输出:

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.

您可以看到错误是&#34;请求在等待连接时被取消&#34;。