在公網上,通常狀況下都不暴露默認端口,避免被攻擊!mysql
如下修改harbor的默認80端口爲其餘端口!nginx
我這裏示例修改成1180端口!sql
注意:如下步驟都是在harbor目錄下操做!!!docker
一、修改docker-compose.yml文件映射爲1180端口:vim
1 #vim docker-compose.yml 2 3 proxy: 4 image: nginx:1.11.5 5 container_name: nginx 6 restart: always 7 volumes: 8 - ./common/config/nginx:/etc/nginx 9 ports: 10 - 1180:80 11 - 1143:443 12 depends_on: 13 - mysql 14 - registry 15 - ui 16 - log
二、修改common/templates/registry/config.yml文件加入1180端口:服務器
#vim common/templates/registry/config.yml auth: token: issuer: registry-token-issuer realm: $ui_url:1180/service/token rootcertbundle: /etc/registry/root.crt service: token-service
三、中止harbor,從新啓動並生成配置文件:tcp
#docker-compose stop # ./install.sh
四、修改docker啓動文件,設置信任的主機與端口:測試
#vim /usr/lib/systemd/system/docker.service 修改以下一行 ExecStart=/usr/bin/dockerd --insecure-registry=172.16.103.99:1180
五、從新啓動docker:ui
systemctl daemon-reload
systemctl restart docker.service
最後,測試驗證:url
# docker login 172.16.103.99:1180 Username: huangjc Password: Login Succeeded
ok,完成!
記得登陸時是1180這個端口哦!!
常見的2個報錯信息解答:
(1)Error response from daemon: Get https://172.16.103.99/v1/users/: dial tcp 172.16.103.99:443: getsockopt: connection refused
(2)Error response from daemon: Get https://172.16.103.99:1180/v1/users/: http: server gave HTTP response to HTTPS client
報這2個錯誤的都是以下2個緣由:
一、是端口錯了!
二、未在docker啓動文件中添加--insecure-registry信任關係!
大多數這個錯誤是第2個緣由,由於你沒有添加信任關係的話,docker默認使用的是https協議,因此端口不對(443),會報鏈接拒絕這個錯誤;
或者提示你 "服務器給HTTPS端的是HTTP響應" 這個錯誤,由於你沒添加端口信任,服務器認爲這是默認的https訪問,返回的倒是http數據!
解決方法:
正確的添加信任關係包括端口號:
--insecure-registry=172.16.103.99:1180
必定要把主機與端口同時添加進去!
注:
記住,這是harbor鏡像倉庫,而不是單純的registry容器倉庫!
若是你用的是默認的80端口,則不須要加,或者加上80也行,而不是5000這個端口!