nginx - docker pull push 登录成功后无法正常工作

标签 nginx docker registry reverse-proxy

我目前正在尝试将 nexus3 配置为 docker 镜像的私有(private)注册表,并使用 nginx 作为反向代理。在 nexus 中创建了 3 个存储库,即 NexusDockerProxy(docker 代理)、NexusDockerHosted(docker 托管,http 端口:4444)和 NexusDockerGroup(docker 组,http 端口:5555),同时添加了托管和代理。

Nexus 配置了 nginx,我们使用的是自签名证书,并将其添加到 nginx 配置文件中。

server {

    proxy_send_timeout 120;
    proxy_read_timeout 300;
    proxy_buffering    off;
    tcp_nodelay        on;

    server_tokens off;
    client_max_body_size 1G;

    listen 80;
    server_name server908.int.org.com;
    location / {
          rewrite ^(.*) https://server908.int.org.com$1 permanent;
    }
}

server {

    listen 443;
    server_name server908.int.org.com;
    keepalive_timeout 60;
    ssl on;
    ssl_certificate /etc/ssl/certs/orgnexus.crt;
    ssl_certificate_key /etc/ssl/certs/orgnexus.key;
    ssl_ciphers HIGH:!kEDH:!ADH:!MD5:@STRENGTH;
    ssl_session_cache shared:TLSSSL:16m;
    ssl_session_timeout 10m;
    ssl_prefer_server_ciphers on;

    location / {

      proxy_set_header        Host $http_host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto "https";
      proxy_pass              http://server908.int.org.com:8082;
      proxy_read_timeout      90;

    }
}

# correlates to your nexus http connector
server {

    listen 6666;
    server_name server908.int.org.com;
    keepalive_timeout 60;
    ssl on;
    ssl_certificate /etc/ssl/certs/orgnexus.crt;
    ssl_certificate_key /etc/ssl/certs/orgnexus.key;
    ssl_ciphers HIGH:!kEDH:!ADH:!MD5:@STRENGTH;
    ssl_session_cache shared:TLSSSL:16m;
    ssl_session_timeout 10m;
    ssl_prefer_server_ciphers on;
    client_max_body_size 1G;
    chunked_transfer_encoding on;

    location / {

      access_log              /var/log/nginx/docker.log;
      proxy_set_header        Host $http_host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto "https";
      #proxy_pass              http://server908.int.org.com:4444;
      proxy_pass              http://server908.int.org.com:5555;
      proxy_read_timeout      90;

    }
}

我们用“/etc/default/docker”文件评论了下面的条目。
http_proxy=http://x.x.x.x:3128
https_proxy=http://x.x.x.x:3128

登录也成功
[root@server446 ~]$ docker login -u admin -p admin123 server908.int.org.com:6666
Login Succeeded

搜索图像也可以正常工作。
[dockertest@server446 ~]$ docker search server908.int.org.com:6666/fedora
INDEX      NAME                                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
org.com   server908.int.org.com:6666/fedora                         Official Docker builds of Fedora                544       [OK]
org.com   server908.int.org.com:6666/fedora/apache                                                                  33                   [OK]
org.com   server908.int.org.com:6666/fedora/couchdb                                                                 32                   [OK]
org.com   server908.int.org.com:6666/fedora/firefox                                                                 23                   [OK]
org.com   server908.int.org.com:6666/fedora/mariadb                                                                 23                   [OK]
org.com   server908.int.org.com:6666/fedora/qpid                                                                    20                   [OK]
org.com   server908.int.org.com:6666/fedora/redis                                                                   20                   [OK]
org.com   server908.int.org.com:6666/fedora/ssh                                                                     20                   [OK]
org.com   server908.int.org.com:6666/fedora/nginx                                                                   19                   [OK]
org.com   server908.int.org.com:6666/fedora/memcached                                                               18                   [OK]
org.com   server908.int.org.com:6666/fedora/rabbitmq                                                                18                   [OK]
org.com   server908.int.org.com:6666/fedora/earthquake                                                              17                   [OK]
org.com   server908.int.org.com:6666/fedora/nodejs                                                                  15                   [OK]
org.com   server908.int.org.com:6666/mattsch/fedora-nzbhydra        Fedora NZBHydra                                 4                    [OK]
org.com   server908.int.org.com:6666/dockingbay/fedora-rust         Trusted build of Rust programming language...   3                    [OK]
org.com   server908.int.org.com:6666/gluster/gluster-fedora         Official GlusterFS image [ Fedora ( latest...   3                    [OK]
org.com   server908.int.org.com:6666/startx/fedora                  Simple container used for all startx based...   3                    [OK]
org.com   server908.int.org.com:6666/eminguez/flexget-fedora        Flexget Docker Container based in Fedora t...   2                    [OK]
org.com   server908.int.org.com:6666/eminguez/transmission-fedora   Transmission Fedora (fedora:latest) docker...   2                    [OK]
org.com   server908.int.org.com:6666/fedora/owncloud                                                                2                    [OK]
org.com   server908.int.org.com:6666/gdepuille/fedora-ansible       Image to test Ansible playbook with Fedora      2                    [OK]
org.com   server908.int.org.com:6666/kumarpraveen/fedora-sshd       Fedora docker file for ssh service which m...   2                    [OK]
org.com   server908.int.org.com:6666/vbatts/fedora-varnish          https://github.com/vbatts/laughing-octo/tr...   2                    [OK]
org.com   server908.int.org.com:6666/darksheer/fedora               Hourly update latest Fedora Image               1                    [OK]
org.com   server908.int.org.com:6666/darksheer/fedora22             Base Fedora 22 Image -- Updated hourly  

    1                    [OK]

但是我们在尝试提取图像时面临以下问题。
[dockertest@server446 ~]$ docker pull server908.int.org.com:6666/fedora
Using default tag: latest
Trying to pull repository server908.int.org.com:6666/fedora ...
latest: Pulling from server908.int.org.com:6666/fedora

691bc14ee274: Pulling fs layer
error pulling image configuration: unknown blob

使用关系日志,我看到下面的认证错误。
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) [na:1.8.0_91]
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) [na:1.8.0_91]
        at sun.security.validator.Validator.validate(Validator.java:260) [na:1.8.0_91]
        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) [na:1.8.0_91]
        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) [na:1.8.0_91]

不确定它在寻找什么证书以及在哪里

同样通过 push 我们得到 404 错误,如下所示。
[dockertest@server446 ~]$ docker push server908.int.org.com:6666/maven:1
The push refers to a repository [server908.int.org.com:6666/maven]
701925f78142: Layer already exists
78bb4fee972f: Layer already exists
e1300844f726: Layer already exists
bfee0515af91: Preparing
2afcf4c557eb: Preparing
72cfa243711c: Waiting
9bf603e17b04: Waiting
70b22baddf90: Waiting
596ecbaf3ba4: Waiting
445ed6ee6867: Waiting
c59fa6cbcbd9: Waiting
8d4d1ab5ff74: Waiting
error parsing HTTP 404 response body: invalid character '<' looking for beginning of value:

当 proxy_pass 设置为“http://server908.int.org.com:4444”,即 NexusDockerHosted(docker 托管,http 端口:4444,我们可以使用 nexus 登录、推送和拉取,但无法从互联网 docker hub 拉取新图像。我们得到以下错误。
[root@server446 ~]$ docker pull server908.int.org.com:6666/centos
Using default tag: latest
Trying to pull repository server908.int.org.com:6666/centos ...
manifest unknown: manifest unknown

关系文档没有提供任何明确的说明。我是否在 nginx 或 docker 或 nexus 中遗漏了一些重要的东西。我指的是以下引用资料。

https://stackoverflow.com/questions/39148462/docker-login-not-working-with-nexus-3-private-registry

Nexus3 Documentation for Docker Hosting

任何获得 docker pull 的帮助都会非常有帮助,谢谢。

最佳答案

我不相信 Nexus 是通过缓存拉动的。您将直接从集线器中拉出。然后,您可以标记您的图像并将其推送到您想要的本地注册表。

docker pull centos
docker tag centos local.registry:5000/centos
docker push local.registry:5000/centos

关于nginx - docker pull push 登录成功后无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44491863/

相关文章:

git - Openshift v3 Online 上的构建器角色

node.js - Docker,无法启动服务 : Failed to start a new language worker for runtime: node. Apple M1 有问题吗?

c++ - 基于 SAPI 的应用程序在枚举 token 时抛出内存访问冲突

c# - 从 C# 应用程序中添加 reg 并从 cmd 窗口中查询值后出现不同值的原因是什么?

c# - WebRequest.Create 抛出 IOException "The specified registry key does not exist."

docker - 如何在Digitalocean访问Docker容器?

ssl - 本地主机上的 Nginx SSL

node.js - NGINX:将所有请求重定向到我的本地主机端口到 https/SSL

nginx - Kubernetes ingress-nginx - 如果未配置 TLS,如何禁用 https 监听?

http - 如何启用nginx代理通行证?