[英]Nexus3 docker different repo for different env, such as dev, prod
[英]Nexus3: Push to Docker Group Repo
我有Nexusv3.6並創建了一個Docker repo docker docker-repo
(類型:托管)和一個Docker組docker-group
(類型:group)。 對於我啟用的HTTPS連接器 :
端口8101
上的docker-repo
和端口8102
上的docker-group
。
我將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
有什么想法這里的問題是什么?
我用NGINX解決了這個問題如下: 更新 。
在以下示例中,“repository / docker”是一個組合了docker-proxy和docker托管的存儲庫的組。
所有HEAD
*和GET
請求都代理到docker存儲庫組(托管+代理)。 所有“更改”請求都直接代理到docker托管的存儲庫。
*一個例外。 HEAD /v2/.../blobs/
應代理托管HEAD /v2/.../blobs/
因為它在推送blob之前調用托管HEAD /v2/.../blobs/
,我們必須檢查托管HEAD /v2/.../blobs/
的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.