老男孩IT教育,只培养技术精英

全国免费咨询电话:400-609-2893访问旧版
使用Harbor构建企业级Docker Registry

    /    2017-07-13

前言

用过Docker的知道拥有一个Docker Registry是多么的重要,但是官方自带的免费的Docker Registry除了没有管理页面,甚至连一些运维必备的功能都是缺失的,所以一直在寻找一个Registry的管理工具,直到看到了Harbor



Harbor简介



 

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor官方网站:http://vmware.github.io/harbor/

 

Harbor部署实战



 

Harbor是由Vmware中国研发团队负责开发的开源企业级Docker Registry,不仅仅解决了我们直接使用Docker Registry的功能确实,更解决了我们在生产使用Docker Registry面临的高可用、镜像仓库直接复制、镜像仓库性能等运维痛点。

# cd /usr/local/

# git clone https://github.com/vmware/harbor

 

部署目录

    harbor部署的所有文件均在Deploy目录下

# cd harbor/Deploy/

# ls

config

db

docker-compose.yml #docker compose模板

docker-compose.yml.photon

harbor.cfg   #harbor配置文件

(省略部分输出) 

Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。你可以查看docker-compose.yml文件,可以发现Harbor6个容器组成:

1.    harbor_uiharbor的核心服务。

2.    harbor_log:运行着rsyslog的容器,进行日志收集。

3.    harbor_mysql:由官方mysql镜像构成的数据库容器

4.    nginx:使用Nginx做反向代理

5.    registry:官方的Docker registry

6.    harbor_jobserviceHarbor的任务管理服务。



Harbor配置https访问



 

    默认情况下Harbor是使用http进行访问,官方提供了自签名证书的方法,不过生产环境还是建议购买SSL证书。

1.配置证书

如果你没有SSL证书,那么也不要使用网上复杂的自签名证书的步骤了。可以来这里申请一个免费的SSL证书。https://buy.wosign.com/free/#ssl

[root@mysql-yxpopoDeploy]# cd config/nginx/

将两个证书文件放置到cert目录下。

xxx.xxx.com.crt(证书公钥)

xxx.xxx.com.key(证书私钥)



2.修改Nginx配置文件

http://www.wosign.com/Docdownload/Nginx%20SSL%E8%AF%81%E4%B9%A6%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97.pdf

 

# cp nginx.https.conf nginx.conf

server {

    listen443 ssl;

   server_name registry.unixhot.com;

# SSL

    ssl_certificate/etc/nginx/cert/1_registry.unixhot.com_bundle.crt;

ssl_certificate_key/etc/nginx/cert/2_registry.unixhot.com.key;

ssl_protocols TLSv1.1 TLSv1.2;

   ssl_ciphersAESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

   ssl_prefer_server_ciphers on;

   ssl_session_cache shared:SSL:10m;

#配置访问80端口的请求,转到443端口

server {

      listen80;

     server_name registry.unixhot.com;

      rewrite^/(.*) https://$server_name:443/$1 permanent;

  }

 

#配置ACL,限制访问(如果你准备放置在外围,又想限制IP访问)

  allow127.0.0.1;

  allow192.168.0.0/16;

  deny all;

 

Harbor配置



Harbor的配置项比较少,在harbor.cfg里面。

 

[root@mysql-yxpopo Deploy]# vim harbor.cfg

hostname = registry.unixhot.com

ui_url_protocol = https

harbor_admin_password = unixhot.com

 

构建并启动Harbor

[root@mysql-yxpopo Deploy]# ./prepare

Generated configuration file: ./config/ui/env

Generated configuration file: ./config/ui/app.conf

Generated configuration file:./config/registry/config.yml

Generated configuration file: ./config/db/env

Generated configuration file:./config/jobservice/env

Clearing the configuration file:./config/ui/private_key.pem

Clearing the configuration file:./config/registry/root.crt

Generated configuration file:./config/ui/private_key.pem

Generated configuration file:./config/registry/root.crt

The configuration files are ready, please usedocker-compose to start the service.

 

使用DockerCompose启动服务

[root@mysql-yxpopo Deploy]# docker-compose up -d

现在你就可以访问https://xxx.xxx.com,打开Harbor的管理界面。使用默认的账号



(0)

分享至