我按照 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 会尝试这样做。
最佳答案
我遇到了同样的问题,并通过让我的本地 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 secret 不匹配。您需要使用环境变量 REGISTRY_HTTP_SECRET
或在配置文件中像这样将它们全部显式设置为相同的内容:
http:
secret: mysecret
我看到 2013 年的一篇博客文章声称 secret 需要 64 个字符长,但我在文档中没有看到
关于docker - 尝试推送到我的私有(private)存储库时,我不断收到 404 错误。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33600338/