I have Nexusv3.6 and created a Docker repo docker-repo
(type: hosted) and a Docker group docker-group
(type: group).
For both I enabled HTTPS connector:![enter image description here](https://i.stack.imgur.com/XlNmq.png)
docker-repo
在港口8101
and docker-group
在港口8102
.
I added docker-repo
to my 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
有什么想法这里有什么问题吗?
我用 NGINX 解决了这个问题,如下所示:Updated.
在以下示例中,“repository/docker”是组合了 docker-proxy 和 docker 托管存储库的组。
All HEAD
* and GET
请求被代理到 docker 存储库组(托管 + 代理)。
所有“更改”请求都直接代理到 docker 托管的存储库。
*有一个例外。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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)