harbor的部署比较简单,基本就是一个命令,这里不做介绍,官网也比较详细。
harbor2.x默认情况下,配置好hostname,部署好以后就可以通过hostname的域名或者IP访问。
但是有时候,服务器前端还有一层代理服务器,比如nginx或slb等,这个时候按照默认的harbor配置,代理以后就无法正常访问。
只需要修改harbor.yml,把https相关的注释,(如果没有注释,http会自动重定向到https,导致多次重定向)然后添加:
external_url: https://docker.amd5.cn # (或者external_url: http://docker.amd5.cn),如果这里是https,nginx代理就需要配置ssl。
修改配置以后不能安装notary,即不能使用--with-notary参数。然后执行:
#prepare - -with-clair - -with-chartmuseum
#docker-compose up -d
启动以后,配置好nginx或者slb代理就可以正常访问了。
如果docker push报错:unauthorized: unauthorized to access repository(unauthorized: authentication required) 或者日志里面报错:unknown blob,编辑 common/config/nginx/nginx.conf , 注释掉所有的 proxy_set_header X-Forwarded-Proto $scheme; 重启即可。(执行prepare后需要再次修改)
如果docker push报错:received unexpected HTTP status: 502 Bad Gateway (这种情况我是用了阿里云SLB出现的,nginx反向代理的时候,未出现此问题),主要原因是:
docker login的时候,回话只进行了一次,并且都走了https协议,所以没有出现问题。
而docker push操作,分为2步:
验证: 和login类似,多了步去查你的权限。
push: 这里恰恰出了问题,因为它走了http的协议,相关规则的文件:(https://github.com/docker/distribution/blob/master/registry/api/v2/urls.go)
而重新走了http的内容,会被认为是401的,所以会出了上边的报错。
证书需要购买或者自己生成,下面是nginx配置:
upstream harbor { server 192.168.1.222:80 weight=1; } server { listen 80; listen 443 ssl; server_name docker.amd5.cn; ssl_certificate /etc/nginx/vhost/ssl/www.amd5.cn.pem; ssl_certificate_key /etc/nginx/vhost/ssl/www.amd5.cn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://harbor; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 20m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 6 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
证书生成,可以参考http://www.amd5.cn/atang_3162.html 证书生成部分。
其他docker镜像仓库部署:
搭建具有认证、TLS的docker registry私有仓库 http://www.amd5.cn/atang_3828.html
使用Nexus3.x搭建Docker私有仓库 http://www.amd5.cn/atang_4286.html