分享

Harbor安装 -- 企业级Registry仓库

 昵称12110172 2018-06-29

在公网上,一般情况下都不暴露默认端口,避免被攻击!

以下修改harbor的默认80端口为其他端口!

我这里示例修改为1180端口!

 

注意:以下步骤都是在harbor目录下操作!!!

1、修改docker-compose.yml文件映射为1180端口:

复制代码
 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
复制代码

 

2、修改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
复制代码

 

3、停止harbor,重新启动并生成配置文件:

#docker-compose stop
# ./install.sh

 

4、修改docker启动文件,设置信任的主机与端口:

#vim /usr/lib/systemd/system/docker.service  修改如下一行
ExecStart=/usr/bin/dockerd --insecure-registry=172.16.103.99:1180

 

5、重新启动docker:

systemctl daemon-reload
systemctl restart docker.service

 

最后,测试验证:

# 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个原因:

1、是端口错了!

2、未在docker启动文件中添加--insecure-registry信任关系!

大多数这个错误是第2个原因,因为你没有添加信任关系的话,docker默认使用的是https协议,所以端口不对(443),会报连接拒绝这个错误;

或者提示你 "服务器给HTTPS端的是HTTP响应" 这个错误,因为你没添加端口信任,服务器认为这是默认的https访问,返回的却是http数据!

 

解决方法:

正确的添加信任关系包括端口号:

--insecure-registry=172.16.103.99:1180

一定要把主机与端口同时添加进去!

 

注:

记住,这是harbor镜像仓库,而不是单纯的registry容器仓库!

如果你用的是默认的80端口,则不需要加,或者加上80也行,而不是5000这个端口!


创建证书

 * 创建证书存放目录

[root@harbor ~]# mkdir -p /data/cert


 * 切换工作路径切证书存放目录

[root@harbor ~]# cd /data/cert/


 * 创建 CA 根证书

[root@harbor cert]# openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=wuhan/O=lisea/CN=harbor-registry"


 * 生成一个证书签名, 设置访问域名为 harbor.lisea.acn

[root@harbor cert]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.lisea.cn.key -out server.csr -subj "/C=CN/L=wuhan/O=lisea/CN=harbor.lisea.cn"


 * 生成主机的证书

[root@harbor cert]# openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.lisea.cn.crt

编辑文件make / harbor.cfg,更新主机名和协议,并更新属性ssl_certssl_cert_key

  1. #set hostname
  2. hostname = reg.yourdomain.com
  3. #set ui_url_protocol
  4. ui_url_protocol = https
  5. ......
  6. #The path of cert and key files for nginx, they are applied only the protocol is set to https
  7. ssl_cert = /root/data/cert/yourdomain.com.crt
  8. ssl_cert_key = /root/data/cert/yourdomain.com.key

为Harbour生成配置文件:

  ./prepare

如果Harbor已经运行,请停止并删除现有的实例。您的图像数据保留在文件系统中

  docker-compose down  

最后重启Harbour:

  docker-compose up -d

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多