当前位置: 首页 > 知识库问答 >
问题:

Docker pull from Nexus proxy daemon错误响应:unknown:unknown

沈健
2023-03-14

在配置Nexus docker注册表和代理“dockerhub-proxy”之后,如下所述:

>

  • https://help.sonatype.com/repomanager3/formats/docker-registry/proxy-repository-for-docker?_ga=2.92128602.1162476489.1558444570-958347079.1551460270

    https://mtijhof.wordpress.com/2018/07/23/Using-nexus-oss-as-a-proxy-cache-for-docker-images/

    我可以在docker登录后将映像推送到nexus注册表,但无法通过nexus代理“dockerhub-proxy”从docker hub中提取映像,错误没有给出详细信息:

    后台进程错误响应:未知:未知

    这是用于在docker桌面窗口上运行的docker后台进程客户端:

    版本2.0.0.3(31259)通道:稳定构建:8858DB3引擎:18.09.2

    我已经通过docker客户端从一个Linux EC2实例进行了尝试,它工作得很好:

    [root@ip-host-daemon docker]#docker使用默认标记拉取ip_nexus_host:port_http_connector_nexus_proxy/mongo:latest最新:从mongo拉取摘要:sha256:29d7ca01f9b7e3812a831ff143620e93ddf5e34bb9ac672d91140e064158a0fc状态:已下载ip_nexus_host:port_http_connector_nexus_proxy/mongo:latest的较新映像

    我不知道为什么在windows上它不工作

    我正在寻找通过Docker Windows客户端守护进程从Docker Hub拉出官方Docker映像的能力,比如mongo,通过配置在Nexus OSS上的Nexus代理,并通过http连接器公开到Nexus组(包含主机和代理)中,Nexus OSS托管在AWS EC2 linux实例VPC/私有子网上,没有任何公共主机名/EIP,但通过ELB/ALB。

    谢谢你的帮助

  • 共有1个答案

    娄振
    2023-03-14

    根据这篇文章:

    https://support.sonatype.com/hc/en-us/articles/115013153887-docker-repository-configuration-and-client-connection

    您的nexus通过以下语法公开docker CLI可访问的HTTP(S)连接器:

    docker pull <nexus-hostname>:<port_nexus_docker_group>/<dockerHubImage>:<officialTag>
    docker push <nexus-hostname>:<port_nexus_docker_host>/<yourImage>:<yourTag>
    

    如果您的Nexus在您的VPC中有公共DNS,很明显,只需打开托管和运行Nexus服务器的EC2实例的安全组上的每个端口,就可以允许来自您的IP范围/CIDR源的入站网络流量。

    如果您的Nexus在您的VPC的私有子网中有私有IP,只需在它前面的公共子网上的同一VPC上放置一个AWS-ELB网络负载均衡器,每个暴露的HTTP(S)端口(nexus-group和nexus-hosted)有两个TCP侦听器,它们重定向在两个TCP目标组上,实例目标类型在您的EC2实例ID上,托管您的Nexus服务器,这将重定向网络流量从您的公共DNS到您的ELB,然后再到您的Nexus EC2实例。

    请注意,我们没有使用AWS-ELB应用程序负载均衡器,因为它只与HTTP侦听器一起工作,并且当您启动Docker CLI时,Docker不支持使用上下文指定到存储库的路径,默认情况下它是HTTP(S)并且存在URL路径模式/v2/*的中间调用。

    在正确的设置和配置之后,您将能够docker登录、拉取和推送图像到您的内部nexus存储库,如以下示例powershell会话:

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    PS D:\> docker login <host_redirect_to_NLB>:<port_nexus_docker_group>
    Username: tarik
    Password:
    Login Succeeded
    PS D:\> docker login <host_redirect_to_NLB>:<port_nexus_docker_host>
    Username: tarik
    Password:
    Login Succeeded
    PS D:\> docker pull <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux
    Using default tag: latest
    latest: Pulling from amazonlinux
    72d97abdfae3: Pull complete
    Digest: sha256:04f5ea9fec3f1f514451ea7c1a1a77a7c023787cb6cc066cc6d0413b56cd0eac
    Status: Downloaded newer image for <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux:latest
    PS D:\> docker tag <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux <host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux:1.0
    PS D:\> docker push <host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux:1.0
    The push refers to repository [<host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux]
    f387c8b346c8: Pushed
    1.0: digest: sha256:04f5ea9fec3f1f514451ea7c1a1a77a7c023787cb6cc066cc6d0413b56cd0eac size: 529
    PS D:\> more C:\Users\Tarik\.docker\config.json
    {
            "auths": {
                    "<host_redirect_to_NLB>:<port_nexus_docker_host>": {},
                    "<host_redirect_to_NLB>:<port_nexus_docker_group>": {}
            },
            "HttpHeaders": {
                    "User-Agent": "Docker-Client/18.09.2 (windows)"
            },
            "credsStore": "wincred",
            "stackOrchestrator": "swarm"
    }
    
    PS D:\> more C:\Users\Tarik\.docker\daemon.json
    {
      "registry-mirrors": [
        "https://<host_redirect_to_NLB>:<port_nexus_docker_group>"
      ],
      "insecure-registries": [
        "<host_redirect_to_NLB>:<port_nexus_docker_host>",
        "<host_redirect_to_NLB>:<port_nexus_docker_group>"
      ],
      "disable-legacy-registry": true,
      "debug": true,
      "experimental": false
    }
    
     类似资料:
    • 如果资源访问请求失败,资源服务器应该通知客户端该错误。虽然规定这些错误响应超出了本规范的范围,但是本文档在11.4节建立了一张公共注册表,用作OAuth令牌身份验证方案之间分享的错误值。 主要为OAuth令牌身份验证设计的新身份验证方案应该定义向客户端提供错误状态码的机制,其中允许的错误值限于本规范建立的错误注册表中。 这些方案可以限制有效的错误代码是注册值的子集。如果错误代码使用命名参数返回,该

    • 授权服务器使用HTTP 400(错误请求)状态码响应,在响应中包含下列参数: error 必需的。下列ASCII[USASCII]错误代码之一: invalid_request 请求缺少必需的参数、包含不支持的参数值(除了许可类型)、重复参数、包含多个凭据、采用超过一种客户端身份验证机制或其他不规范的格式。 invalid_client 客户端身份验证失败(例如,未知的客户端,不包含客户端身份验证

    • 创建一个 API 的时候处理错误是很痛苦的。为了避免手动的创建错误响应,你可以简单的抛出一个继承了 Symfony\Component\HttpKernel\Exception\HttpException 的异常,API 会自动的为你处理响应。 这里是 Symfony 内置的异常列表。 异常 状态码 Symfony\Component\HttpKernel\Exception\AccessDeni

    • 问题内容: 码: 前端 后端: 情况: 我添加了删除按钮,以便用户可以删除他的帖子。 当用户单击按钮时,将向我的Node.js服务器发出AJAX请求。 但我收到以下错误: 错误: 题: 这是什么错误,我该如何解决? 问题答案: 您得到的答复实际上是 正确的 。根据文档,Firebase返回200状态代码和 空响应 。就是这样 您应该做的就是检查响应中的状态码和状态码;如果为true,则可以放心地假

    • Apache可以让网站管理员自己自定义对一些错误和问题的响应。 自定义的响应可以定义为当服务器检测到错误或问题时才被激活。 如果一个脚本崩溃并产生"500 Server Error"响应,那么这个响应可以被更友好的提示替换或者干脆用重定向语句跳到其他的URL(本地的或外部的)。 行为 老式的行为 Apache1.3 会响应一些对于用户没有任何意义的错误或问题信息,而且不会将产生这些错误的原因写入日

    • 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 6.1. OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://

    • 我正在从服务器下载文件。我用排球来做。 这是我的代码 以下是错误侦听器的错误消息在一些弱网络连接上,我收到以下逻辑消息 我不明白失败的原因是什么,因为大多数错误消息都返回null。我很确定这是因为请求超时,我知道如何增加超时,但是我应该在错误侦听器中编写什么代码,以便在出现错误时获得正确的错误消息。