Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nexus3:推送至Docker集团回购_Docker_Nexus_Docker Registry - Fatal编程技术网

Nexus3:推送至Docker集团回购

Nexus3:推送至Docker集团回购,docker,nexus,docker-registry,Docker,Nexus,Docker Registry,我拥有Nexusv3.6并创建了Docker repoDocker repo(类型:托管)和Docker groupDocker group(类型:组)。 对于我启用的两个HTTPS连接器: docker repo在端口8101和docker group在端口8102上 我将docker repo添加到我的docker组 现在我可以直接向docker repo推/拉图像,就像: docker push myhost.com:8101/mymimage:latest 但当我试图像这样推动团队时:

我拥有Nexusv3.6并创建了Docker repo
Docker repo
(类型:托管)和Docker group
Docker group
(类型:组)。 对于我启用的两个HTTPS连接器:

docker repo
在端口
8101
docker group
在端口
8102

我将
docker repo
添加到我的
docker组

现在我可以直接向docker repo推/拉图像,就像:

docker push myhost.com:8101/mymimage:latest
但当我试图像这样推动团队时:

docker push myhost.com:8102/docker-repo/mymimage:latest
我收到一个错误,上面写着:
解析HTTP 404响应正文时出错:无效字符“,根据官方消息:

建议使用存储库组来公开所有存储库 用于读取用户访问权限的存储库

并且,从关于

您不能推送到存储库组或代理存储库


我用NGINX解决了这个问题,如下所示: 已更新

在下面的示例中,“repository/docker”是一个组合docker代理和docker托管存储库的组

所有
HEAD
*和
GET
请求都被代理到docker存储库组(托管+代理)。 所有“更改”请求都直接代理到docker托管的存储库。
*一个例外
HEAD/v2/../blob/
应该代理托管repo,因为它在将blob推送到托管repo之前调用,我们必须检查托管repo中是否存在blob。否则我们会得到一个错误:
blob未知:blob对注册表未知

    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";
        }
    }
您可以通过运行以下命令来验证设置:

#通过代理拉取
docker pull nexus.your.domain/ubuntu
#推送到托管存储库
docker push nexus.your.domain/ubuntu

这在今天是正确的,但这个想法确实有一些优点。看这里:即使我们想从小组中抽签,你也应该得到+1。如果您知道如何从docker组存储库而不是代理中提取,请ping我。不太理解您的问题。在我的示例
repository/docker
中,这就是这个组。有人能把它翻译成ApacheHTTPD吗?