Mun*_*kin 3 nexus docker docker-registry
我拥有Nexusv3.6,并创建了一个Docker存储库docker-repo
(类型:托管)和一个Docker组docker-group
(类型:group)。我都启用了HTTPS连接器:
docker-repo
在港口8101
和docker-group
在港口8102
。
我加docker-repo
了docker-group
。
现在,我可以docker-repo
像这样直接将图像推入/拉出:
docker push myhost.com:8101/mymimage:latest
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试像这样推动该小组时:
docker push myhost.com:8102/docker-repo/mymimage:latest
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息: error parsing HTTP 404 response body: invalid character '<' looking for beginning of value
任何想法在这里有什么问题?
根据有关 docker 存储库组的官方文档:
存储库组是公开所有存储库以供用户读取访问权限的推荐方式。
并且,来自关于在私有注册表中推送图像的文档
您不能推送到存储库组或代理存储库。
我使用NGINX解决了此问题,如下所示: Updated。
在以下示例中,“存储库/ docker”是一个组合了docker-proxy和docker-hosted存储库的组。
所有HEAD
*和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";
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下命令来验证设置:
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";
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2772 次 |
最近记录: |