docker - 尝试推送到我的私有(private)存储库时,我不断收到 404 错误。为什么?

标签 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 甚至会尝试这样做。

最佳答案

我有同样的问题,并通过整理我的本地 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 年的一篇博文,声称密码长度必须为 64 个字符,但我在文档中没有看到

关于docker - 尝试推送到我的私有(private)存储库时,我不断收到 404 错误。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600338/

相关文章:

docker - 如何在许多连接的项目中使用Docker

docker - 添加新节点后,重新进行群调度

python - 如何从Python进程登录Kubernetes容器日志

authentication - Docker Hub API v2 token 认证问题

docker - 如果注册表中不存在镜像,则私有(private) docker 注册表服务器将从 docker hub 中拉取

docker - 如何在不访问容器的情况下在Docker Registry中使用GC

logging - 如何在容器上的特定进程上获取RAM,CPU,网络使用情况

c# - 无法通过 Windows 上的 Docker 访问 .Net Core 应用程序(本地主机)

docker - 将 docker 镜像部署到 heroku

amazon-s3 - Docker 注册表 :2. 0 覆盖配置选项