私有Nexus上的Docker登录 => 守护程序的错误响应:尝试登录http://ip:port/v2/失败,状态为404 Not Found。

11

我试图将一个docker镜像推送到我的私有Nexus 3注册表。

在推送之前,我尝试进行身份验证: docker login nexus_host:nexus_port

但是我收到了以下错误消息:

Error response from daemon: login attempt to http://nexus_host:nexus_port/v2/ failed with status: 404 Not Found

我的Nexus使用HTTP,因此将其添加到docker不安全的注册表列表中。

  • Nexus版本:Nexus Repository Manager OSS 3.9.0-01
  • Docker版本:17.09.1-ce(Windows 10)

编辑(08/03/2018):

我使用托管的docker存储库。我应该使用HTTP连接器吗?

Repo Configuration :
Format : docker
Type : hosted
URL : http://192.168.0.90:8082/repository/docker-repo/
HTTP connector port : 1111

Login attempts :

docker login 192.168.0.90:8082 => Error response from daemon: login attempt to http://192.168.0.90:8082/v2/ failed with status: 404 Not Found

docker login 192.168.0.90:1111 => 容器引擎错误响应:从守护程序获取https://192.168.0.90:1111/v2/:拨号tcp 192.168.0.90:1111:getsockopt:连接被拒绝


我刚在一个 Debian 机器上尝试了一下 => 结果相同 - Loïc
1
使用了哪种类型的Docker仓库?您只能将其推送到托管的Docker仓库,推送到组或代理是行不通的。 - rseddon
@rseddon 感谢您的帮助。我使用托管的Docker仓库。我更新了主题描述,因为我尝试过使用或不使用HTTP连接器,错误消息是不同的。 - Loïc
2个回答

6

要登录到您的Docker存储库的正确命令是docker login 192.168.0.90:1111,因为您已经在端口1111上启用了HTTP连接器。

请确保您已经在您的Docker存储库设置中勾选了Force basic authentication,并且对于docker login使用与访问您的Nexus Repository Manager实例相同的凭据。

如果以上内容无法帮助您解决问题,则应该关注导致连接被拒绝的原因 - 请检查是否有防火墙将您和Nexus之间的端口1111(即您的Docker存储库连接器端口)阻止。


9
我设法登录到1111端口。问题是我的Nexus位于Docker容器中,而1111端口没有暴露出来...这是新手的错误!谢谢,Dawid! - Loïc
我遇到的另一个问题是在我的Docker Daemon配置中没有将localhost:5000添加到我的不安全注册表中... - Sean Pianka
@Loïc,我也遇到了同样的问题。我试图暴露HTTP连接器的端口,但在 Nexus 容器内该端口仍未开放。您是如何打开它的? - mtleis
1
重新运行它,再加一个“-p”。例如:docker run -d -p 8081:8081 -p 8123:8123 - Sorin Grecu

0
当您在主机上运行容器时,与应用程序通信的唯一方法(除了从容器获取bash)是在容器运行之前公开的端口。
您只需要在运行容器之前使用此命令公开所选端口即可:
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3

第一个端口(8081)用于Nexus本身,第二个端口(8082)用于配置中的HTTP连接器。

就是这样!

这里有一份关于这个主题的好指南: https://www.ivankrizsan.se/2016/06/09/create-a-private-docker-registry/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接