使用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文件,可以发现Harbor有6个容器组成:

  1. harbor_ui:harbor的核心服务。

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

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

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

  5. registry:官方的Docker registry

  6. harbor_jobservice:Harbor的任务管理服务。

  为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的管理界面。使用默认的账号

(8)

分享至