Nexus3:推送到Docker Group Repo

时间:2017-11-08 11:04:17

标签: docker nexus docker-registry

我有Nexusv3.6并创建了一个Docker repo docker-repo(类型:托管)和一个Docker组docker-group(类型:组)。 我同时启用了 HTTPS连接器enter image description here

端口docker-repo上的

8101和端口docker-group上的8102

我将docker-repo添加到docker-group

现在,我可以直接将图像推送到docker-repo /从docker push myhost.com:8101/mymimage:latest 直接推送/取出:

docker push myhost.com:8102/docker-repo/mymimage:latest

但是当我试图像这样推动小组:

error parsing HTTP 404 response body: invalid character '<' looking for beginning of value

我收到错误消息: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-kubernetes</artifactId> <version>0.2.0.RELEASE</version> </dependency>

任何想法在这里有什么问题?

2 个答案:

答案 0 :(得分:3)

根据官方documentation about repository groups for docker

  

建议使用存储库组来公开您的所有内容   读取访问您的用户的存储库。

以及有关pushing images in private registries

的文档
  

您无法推送到存储库组或代理存储库。

答案 1 :(得分:2)

我使用NGINX解决了以下问题:

所有HEAD *和GET请求都是组(托管+代理)注册表的代理。 所有“更改”请求均直接成为托管注册表的代理。
*一个例外。 HEAD /v2/.../blobs/应该代理到托管注册表,因为它在将Blob推送到托管仓库之前被调用了,我们必须检查托管注册表中Blob的存在。否则会出现错误:blob unknown: blob unknown to registry

    server {
        listen   *:443 default_server ssl;

.........................

        location ~ ^/(v1|v2)/[^/]+/?[^/]+/blobs/ {
            if ($request_method ~* (POST|PUT|DELETE|PATCH|HEAD) ) {
                rewrite ^/(.*)$ /repository/docker-hosted/$1 last;
            }
            rewrite ^/(.*)$ /repository/docker/$1 last;
        }

        location ~ ^/(v1|v2)/ {
            if ($request_method ~* (POST|PUT|DELETE|PATCH) ) {
                rewrite ^/(.*)$ /repository/docker-hosted/$1 last;
            }
            rewrite ^/(.*)$ /repository/docker/$1 last;
        }

        location / {
            proxy_pass http://nexus:8081/;
            proxy_set_header Host $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";
        }
    }

您可以通过运行以下命令来验证设置:

# pull via proxy
docker pull nexus.your.domain/ubuntu

# push to the hosted repository
docker push nexus.your.domain/ubuntu