设为首页 收藏本站
查看: 1144|回复: 1

[经验分享] 构建docker高可用私有仓库基于Harbor开源系统

[复制链接]

尚未签到

发表于 2018-5-27 14:37:25 | 显示全部楼层 |阅读模式
  操作系统及相关软件版本说明:
  测试服务器IP地址:
  IP 1 = 192.168.85.158,简称A仓库
  IP 2 = 192.168.85.157,简称B仓库
一、Harbor项目介绍
1、Harbor来源
  VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服务。
  它以Docker公司开源的registry 为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。
2、架构介绍
1) 主要组件
  Harbor在架构上主要由五个组件构成:
  ◆Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
  ◆Registry: 负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。
  ◆Core services: 这是Harbor的核心功能,主要提供以下服务:
  ◇UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。
  ◇webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。
  ◇token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Registry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
  ◆Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。
  ◆Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
  各个组件之间的关系如下图所示:
DSC0000.png

2) 实现
  Harbor的每个组件都是以Docker容器的形式构建的,所以使用Docker Compose来对它进行部署。
  用于部署Harbor的Docker Compose 模板位于 /Deployer/docker-compose.yml. 打开这个模板文件,会发现Harbor由5个容器组成:
  ◆proxy: 由Nginx 服务器构成的反向代理。
  ◆registry:由Docker官方的开源registry 镜像构成的容器实例。
  ◆ui: 即架构中的core services, 构成此容器的代码是Harbor项目的主体。
  ◆mysql: 由官方MySql镜像构成的数据库容器。
  ◆log: 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志。
  这几个容器通过Docker link的形式连接在一起,这样,在容器之间可以通过容器名字互相访问。对终端用户而言,只需要暴露proxy (即Nginx)的服务端口。
  二、安装Docker Compose
1、安装docker-compose方法一
  $ sudo –i
  # curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname-s`-`uname -m` > /usr/local/bin/docker-compose
  # chmod +x /usr/local/bin/docker-compose
  # docker-compose --version docker-compose version: 1.8.1
  这样便安装好了docker-compose。
  三、安装2台Harbor
  以下操作,都是2台服务器同时操作
  实现原理图:
DSC0001.png

  
1、下载harbor安装包

  在线包:
  https://github.com/vmware/harbor/releases/download/0.4.5/harbor-online-installer-0.4.5.tgz
  离线包:
  https://github.com/vmware/harbor/releases/download/0.4.5/harbor-offline-installer-0.4.5.tgz
2、解压、配置、安装harbor
  在安装harbor之前,需要修改/data/harbor/harbor.cfg中的配置参数,然后执行install.sh脚本来生成harbor所有容器的配置文件及启动harbor
  在文件harbor.cfg中,需要配置的参数如下:
  hostname:私有仓库的主机名,可以是IP地址,也可以是域名。这里是配置的域名
  hostname = 192.168.85.157
  ui_url_protocol:用户访问私仓时使用的协议,默认时http,也可配置成https;
  ui_url_protocol = http
  邮箱账号配置
  #Email account settings for sending out password resetting emails.
  email_server = smtp.xxxxx.com
  email_server_port = 25
  email_username = channel@xxxxx.com
  email_password = xxxxf04
  email_from = channel <channel@xxxxx.com>
  email_ssl = false
  harbor_admin_password:harbor的管理员账户密码,默认密码是: Harbor12345  用户名是:admin
  其他配置参数可以参考:
  https://github.com/vmware/harbor/blob/master/docs/installation_guide.md


3、安装启动harbor
  # ./install.sh
DSC0002.png

DSC0003.png

  用docker-compose ps查看下,所有容器是否都启动
DSC0004.png

四、创建docker harbor主主复制                                            
1、在A仓库创建镜像同步策略
  http://192.168.85.158
DSC0005.png

  使用用户名/密码: admin/ Harbor12345 登陆
  登陆后,新建项目hlg_web
DSC0006.png

  点击新增策略,填写相关对端harbor信息,最后点击测试连接
DSC0007.png

  返回测试连接目标成功,表示创建成功
  点击完成,即可看到
DSC0008.png

2、在A仓库中上传镜像到同步项目中并验证
以下在A仓库机器执行
  # docker login -u admin -p Harbor12345  192.168.85.158
  Login Succeeded
  # docker tag c8c29d842c09 192.168.85.158/hlg_web/nginx:1.9
  注:c8c29d842c09为nginx的images id
  # docker push 192.168.85.158/hlg_web/nginx:1.9
DSC0009.png

  然后分别在A仓库、B仓库页面,进行查看验证
DSC00010.png

  

  注:在push上传时,必须要有对应的项目名称,才能push成功
  然后登陆B仓库,查看配置的复制策略,是否同步过来
DSC00011.png

  从主面板看,日志也给同步过来了
DSC00012.png

  3、在B仓库中上传镜像验证同步
  按照上面的方法,反过来,在192.168.85.157上创建策略
  项目—项目名称—点开
DSC00013.png

  点击“复制”—“新增策略”
DSC00014.png

DSC00015.png

  然后我们在B仓库上上传镜像到hlg_web中
  # docker tag 942fd5fd357e 192.168.85.157/hlg_web/swarm
  # docker push 192.168.85.157/hlg_web/swarm
DSC00016.png

  登陆B仓库管理系统
DSC00017.png

  日志显示,已经上传成功。然后在到对应的项目中查看
DSC00018.png

  然后在到A仓库中查看镜像是否一样被同步过来
DSC00019.png

  五、安装过程FAQ
1、非https登陆失败
  # docker login -u admin -p Pty_registry123 172.16.73.50
  Error response from daemon: Get https://172.16.73.50/v1/users/: dial tcp 172.16.73.50:443: getsockopt: connection refused
  编辑 /etc/default/docker 增加如下内容
  DOCKER_OPTS="$DOCKER_OPTS --insecure-registry 172.16.73.50"
  然后停止docker-compose执行
  docker-compose stop
  重启docker执行
  service docker restart
  最后启动docker-compose
  docker-compose start
  以上是利用harbor,搭建的docker私有仓库主主同步方案。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481885-1-1.html 上篇帖子: 学习使用Docker、Docker 下篇帖子: 【实战】Docker 入门实战一:安装Dockeer
累计签到:1 天
连续签到:1 天
发表于 2018-5-27 22:19:41 | 显示全部楼层
好好好好好好好好好好好好好好好好

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表