【问题标题】:Using Sonatype Nexus docker proxy使用 Sonatype Nexus docker 代理
【发布时间】:2021-04-11 15:47:02
【问题描述】:

我在 repository.company.com 下部署了一个 Sonatype Nexus(它位于 nginx 代理后面)。

我创建了一个 docker 注册表和 docker 代理,并将它们添加到一个 docker 组“company-docker-group”中。代理设置为镜像https://registry-1.docker.io,并且还选中了外部层缓存选项。

我为端口 8092 设置了一个 http 连接器,但此时我无权更改 nginx 配置,因此我可以直接访问该端口。我注意到docker组中有一个URL定义为https://repository.company.com/repository/company-docker-group/

我可以通过这个 url 访问组吗?我可以docker login 进入这个网址,但是当我尝试 docker pull repository.company.com/repository/company-docker-group/maven:3.6.2-jdk-8 然后我得到这个错误:

Error response from daemon: manifest for repository.company.com/repository/company-docker-group/maven:3.6.2-jdk-8 not found: manifest unknown: manifest unknown

我只能通过repository.company.com:8092/maven:3.6.2-jdk-8 访问图像还是有办法使用 docker 组 URL?

【问题讨论】:

  • Docker 注册表必须在 Web 上下文路径“/”上运行,因此尝试从“/repository/company-docker-group”中提取是行不通的。有关如何使存储库出现在上下文路径“/”上的信息,请参阅我们的文档:help.sonatype.com/display/NXRM3/…

标签: java docker nginx proxy nexus


【解决方案1】:

Sonatype documentation - 关于这个主题 - 告诉我们:

Docker 依赖于使用 SSL 的安全连接 来连接到存储库。 因此需要向您的客户端工具通过 HTTPS

公开存储库管理器
docker 客户端与存储库的

交互需要使用特定的端口

。这些可以在存储库连接器部分的存储库配置中进行配置

为了在您的网络上运行,您需要确保所选端口在您的组织中可用并且未被其他应用程序使用,并且没有防火墙或其他网络配置会阻止连接

因此,对于您的情况,您必须通过命令docker login https://repository.company.com:8092 登录到您的自定义 docker 注册表

成功登录后,假设您想将名为mynginx 的自定义映像nginx 保存到公司私有Docker 注册表中的com/company/proxy 文件夹中。为了能够将图像推入/拉出自定义 Docker 存储库,您必须:

  1. 通过命令docker tag mynginx:1.0.0 repository.company.com:8092/com/company/proxy/mynginx:1.0.0 将您的图像标记为repository.company.com:8092/com/company/proxy/mynginx:1.0.0
  2. 应用以下命令将您的自定义镜像推送到公司的私有 Docker 注册表:docker push repository.company.com:8092/com/company/proxy/mynginx:1.0.0

通过保存您的自定义图像,您可以随时使用:docker pull repository.company.com:8092/com/company/proxy/mynginx:1.0.0

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2016-07-24
    • 2015-05-18
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多