设为首页 收藏本站
查看: 827|回复: 0

[经验分享] 金庸武功之“打狗棒法”

[复制链接]

尚未签到

发表于 2018-5-28 11:58:38 | 显示全部楼层 |阅读模式
  一、什么是Harbor
  Harbor是一个企业级Registry服务。它对开源的Docker
Registry服务进行了扩展,添加了更多企业用户需要的功能。Harbor被设计用于部署一套组织内部使用的私有环境,这个私有Registry服务对于非常关心安全的组织来说是十分重要的。另外,私有Registry服务可以通过避免从公域网下载镜像而提高企业生产力。这对于没有良好的Internet连接状态,使用DockerContainer的用户是一个福音。
  Harbor是VMware公司最近开源的企业级Docker
Registry项目(https://github.com/vmware/harbor) 。其目标是帮助用户迅速搭建一个企业级的Docker
registry服务。它提供了管理UI, 基于角色的访问控制(Role Based Access
Control),AD/LDAP集成、以及审计日志(Audit logging)
等企业用户需求的功能,同时还原生支持中文。Harbor的每个组件都是以Docker容器的形式构建的,使用Docker
Compose来对它进行部署。
  Harbor项目使用了go语言开发,WEB框架采用beego。容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,在企业私有环境内部署的Registry服务是非常必要的。
  Harbor(https://github.com/vmware/harbor)由VMware中国研发团队为企业用户设计的RegistryServer开源项目,包括了权限管理(RBAC)、图形管理界面、LDAP/AD集成、审计、自我注册、HA等企业必需的功能,同时针对中国用户的特点,原生支持中文,并计划实现镜像复制(roadmap)等功能。
  主要组件
  Harbor系统由五个容器组成:Proxy、Core Services(包含UI, tokenservice和webhook)、Database、Registry和Log Collector。

  •   Proxy提供反向代理服务,用户的不同请求由Proxy分发到后端的UI或者Registry。Harbor中使用的是官方的nginx镜像。
  •   Core Services是Harbor项目的核心组件,主要提供权限管理、审计、管理界面UI、token service以及可供其他系统调用的API等功能。
  •   Database提供数据持久化服务,采用了官方的mysql镜像。
  •   Registry是Docker官方的开源的Registry镜像,主要提供镜像的存储和分发功能。
  •   Log Collector负责收集其他容器的日志并进行日志轮转。
  各个容器之间的关系如下图所示:
DSC0000.jpg

  图摘选自:
  

  http://geek.csdn.net/news/detail/65989
  

  二、快速部署
  1、环境准备
  1)加入 Docker源
  

增加repo
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
  

yum install docker-engine -y
systemctl enable docker.service

systemctl start docker
  

  安装EPEL源
yum install -y epel-release  

  

yum -y install python-pip
pip install -U docker-compose  

  修改/usr/lib/systemd/system/docker.service文件,添加–insecure-registry IP地址。
#修改前#ExecStart=/usr/bin/docker daemon -H fd://
#修改后ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry 172.16.74.150  

  )重启Docker服务
# systemctl daemon-reload
# systemctl restart docker  

  2、安装
  注意:操作系统建议为CentOS 7.2。
  首先,Clone该项目源代码:
# git clone
vi/root/harbor/make/harbor.cfg

hostname:hostname为外部可访问的地址,即bind addr,通常设置为本地公有IP,若内部使用DNS,可设置为主机名;
harbor_admin_password:登录harbor界面admin用户的密码;  

  运行./prepare脚本更新配置完成配置后,就可以使用docker-compose快速部署Harbor了。(make目录下
  

  然后:

  

  cd /root/harbor/make/dev
docker-compose up -d  

  

  最后提示如下信息,便表示安装成功了。
.......
Creating deploy_log_1
Creating deploy_ui_1
Creating deploy_mysql_1
Creating deploy_registry_1
Creating deploy_proxy_1  

  安装完成后,访问Web UI,地址:http:// 172.16.74.150,即配置的hostname地址。
  

  

  3、使用Harbor
  1)从docker hub上下载busybox镜像
# docker run --rm -it busybox /bin/bash  

  2)给镜像打标签,以便上传到私服,其中library是harbor默认提供的项目
# docker tag busybox 192.168.93.205/sjwl/busybox  

  3)上传镜像
  先登录镜像私服,执行以下指令,再输入用户名和密码
# docker login 192.168.93.205
Username: admin
Password:  sjwl123       //输入密码
Login Succeeded  

  上传镜像
# docker push 192.168.93.205/sjwl/busybox  

  4)在浏览器上访问192.168.93.205,登录完成后,点击sjwl这个项目,即可看到上传的busybox。
  用户名:admin
  密码:xxxx
  4、其他(可选)
  以下附带harbor的启动、停止命令
$ sudo docker-compose up –d
$ sudo docker-compose stop
$ sudo docker-compose start
$ sudo docker-compose rm
$ rm -r /data/database
$ rm -r /data/registry  从客户端验证:
  由于我们配置认证服务使用的是http,Docker认为是不安全的,要使用我们部署的镜像仓库,需要配置
  docker启动项(因为我们使用的是1.12.13版本,没有配置文件了,所以只能修改启动项)
  

  vi /usr/lib/systemd/system/docker.service
  ExecStart=/usr/bin/dockerd --insecure-registry 192.168.93.205
  

  systemctl restart docker
  [root@kube dockerfile]# systemctl restart docker
  Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
  

  这时你要先执行下systemctl daemon-reload
  再执行次systemctl restart docker
  这次修改的内容才生效,切记哦!
  

  

  

  其中192.168.93.205是我们部署Harbor的地址,即hostname配置项值。配置完后需要重启docker服务。
  验证能否登录:
docker login 192.168.93.205  

  push成功后,我们就可以从Harbor仓库中使用docker pull拉取我们的镜像了,注意如果是私有项目,必须先使用docker login登录。
docker pull 192.168.93.205/sjwl/busybox  

  5、Harbor作为mirror registry
  Mirror是Docker Registry的一种特殊类型,它起到了类似代理服务器的缓存角色,在用户和Docker Hub之间做Image的缓存。 其基本工作原理是,当用户pull一个镜像时,若镜像在mirror服务器存在,则直接从mirror服务器拉取,否则若不存在该镜像,则由mirror
server自动代理往dockerhub(可配置)中拉取镜像,并缓存到mirror服务器中,当客户再次拉取这个镜像时,直接从mirror
server中拉取,不需要再次从docker hub中拉取。
  Harbor目前不支持pull cache功能,已提交Github issue #120。不过我们只需要手动修改下配置即可完成,具体配置可查看官方Registry as a pull through cache。
  我们在运行./prepare之前修改config/registry/config.yml文件,追加以下配置:
proxy:remoteurl: https://registry-1.docker.io  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

运维网声明 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-482193-1-1.html 上篇帖子: docker创建私有registry 下篇帖子: 使用Docker部署Jenkins
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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