用过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个容器组成:
harbor_ui:harbor的核心服务。
harbor_log:运行着rsyslog的容器,进行日志收集。
harbor_mysql:由官方mysql镜像构成的数据库容器
nginx:使用Nginx做反向代理
registry:官方的Docker registry
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的管理界面。使用默认的账号admin/你设置的密码,进行登录。

登录后的第一件事情永远都是修改默认密码。然后你就可以在项目管理中,新建和管理项目了。不过默认情况下创建的项目library是公开的,
如果你要使用这个项目,而且域名放在公网上,请取消公开。
现在,你就可以登录Harbor快乐的玩耍了。
# docker login registry.unixhot.com
Username: admin
Password:
Email: [email protected]
WARNING: login credentials saved in/root/.docker/config.json
Login Succeeded

results matching ""

    No results matching ""