我尝试将 docker 镜像推送到我的私有 Nexus 3 注册表。
在推送之前,我尝试验证执行:docker login nexus_host:nexus_port
但是我收到以下错误消息:
来自守护程序的错误响应:尝试登录 http://nexus_host:nexus_port/v2/失败 状态:404 未找到
我的 Nexus 使用 HTTP,因此请将其添加到 docker 不安全注册表列表中。
Nexus- 版本 : Nexus 仓库管理器 OSS 3.9.0-01
- 码头工人版本 : 17.09.1-ce (视窗 10)
编辑 (08/03/2018) :
我使用托管的码头工人存储库。我应该使用 HTTP 连接器吗?
存储库配置:格式 : docker
类型 : 托管
网址 : http://192.168.0.90:8082/repository/docker-repo/
HTTP 连接器端口 :
1111
登录尝试 :
docker login 192.168.0.90:8082
=> 来自守护程序的错误响应:登录尝试 http://192.168.0.90:8082/v2/失败,状态:404 未找到
docker login 192.168.0.90:1111
=> 来自守护程序的错误响应:获取 https://192.168.0.90:1111/v2/:拨打 tcp 192.168.0.90:1111:getsockopt:连接被拒绝
登录到 docker 存储库的正确命令是docker login 192.168.0.90:1111
,因为您已在端口1111
上启用了 HTTP 连接器。
请确保您已在 docker 存储库设置中选中强制基本身份验证,并且docker login
使用与访问 Nexus 存储库管理器实例相同的凭据。
如果上述方法没有帮助,那么您应该关注导致连接被拒绝的原因 - 请检查您和 Nexus 阻止端口1111
(您的 docker 存储库连接器端口)之间是否有任何防火墙。
在主机中运行容器时,与应用程序通信的唯一方法(从容器获取 bash 除外)是在容器运行之前公开的端口。
您只需要在使用以下命令运行容器之前公开所选端口:
docker run -d -p 8081:8081 -p 8082:8082 --name nexus sonatype/nexus3
第一个端口 (8081) 用于连接本身,第二个端口 (8082) 用于配置中的 http 连接器。
就是这样!
这是关于这个主题的一个很好的指南: https://www.ivankrizsan.se/2016/06/09/create-a-private-docker-registry/