基本上,我在连接到我尝试使用最新的 Nexus 预览版创建的 docker 注册表时遇到了问题。首先,我在运行 Ubuntu 14.04 trusty 的 MS Azure 云服务器上安装了 Sonotype Nexus 3 Preview。让我们调用这个位置
my-azure-site.cloudapp.net:8443/nexus 访问 Nexus UI。我从头到尾都在使用本指南 - https://books.sonatype.com/nexus-book/3.0/reference/index.html
所以我知道连接到远程 Docker 存储库的唯一方法是通过 SSL,因此我在 nexus 中启用了 HTTPS,如使用 8443 端口所示。然后,我创建了一个名为 docker-hub 的 Docker 代理存储库,以便能够从 Docker Central Hub 中提取镜像,如指南第 8.3 节所述。 Nexus 显示该存储库的 URL 为
https://my-azure-site.cloudapp.net:8443/nexus/repository/docker-hub/
然后,我创建了一个名为 docker-mySoftware 的私有(private)托管存储库,其 HTTPS docker 连接器端口为 18444,如指南第 8.4 节所述,Nexus 将 URL 显示为
https://my-azure-site.cloudapp.net:8443/nexus/repository/docker-mySoftware/
然后,我创建了一个名为 docker-all 的组存储库,其中包含上述 2 个内容,其 HTTPS docker 连接器端口为 18443,如指南第 8.5 节所述,Nexus 将 URL 显示为
https://my-azure-site.cloudapp.net:8443/nexus/repository/docker-all/
首先,当我尝试运行第 8.7 节中概述的以下命令来使用我的本地 docker 客户端(也在我的物理笔记本电脑上运行 ubuntu)测试代理时
sudo docker 搜索 my-azure-site.cloudapp.net:18443/postgres
我收到消息说 my-azure-site.net:18443 有一个 ca 证书,但 my-azure-site.cloudapp.net:18443 没有 ca 证书,因此我使用 keytool 重新创建了证书以包含 cloudapp 部分。现在,当我重试时,我得到了
来自守护程序的错误响应:意外的状态代码 404
顺便说一句,我忘了提及我事先在 Azure 控制台上打开了端口 18444 和 18443。
我尝试使用
重新创建存储库、重新索引代理存储库、在 nexus azure 云上重新创建证书sudo docker -d --insecure-registry my-azure-site.cloudapp.net:18443
在我的 docker 客户端计算机上希望能够绕过所有这些认证内容,但仍然没有运气。我尝试了不同的 URL 组合,例如
sudo docker 搜索 my-azure-site.cloudapp.net:18443/nexus/postgres 和 https://my-azure-site.cloudapp.net:8443/nexus/repository/docker-all/nexus等等
最佳答案
正如您正确识别的那样,设置上下文路径导致了问题。事实证明这是一个错误,现已修复。 Nexus 3 的下一个版本(Milestone 6)将包含该修复并允许您使用上下文路径。
但是请记住,上下文路径不会成为 Docker URL 的一部分,因为 docker 注册表格式以及 Docker 客户端都不支持上下文路径。因此,对于 Docker 的特定用法,您将继续使用记录的端口。
更新:里程碑 6 版本已发布并包含相关修复。
关于azure - 连接到 Azure VM 上的 Nexus 3 Preview 上存储的 Docker 注册表时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33021350/