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

[经验分享] 企业级docker私有仓库harbor在Ubuntu14.04上的部署与使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-13 09:57:41 | 显示全部楼层 |阅读模式
一、harbor简介:
  简单的说,Harbor 是一个企业级的 Docker Registry,可以实现 images 的私有存储和日志统计权限控制等功能,并支持创建多项目(Harbor 提出的概念),基于官方 Registry V2 实现的。

二、部署方法:
  操作系统:Ubuntu14.04
  1、安装docker:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#安装插件
sudo apt-get install apt-transport-https ca-certificates

#添加GPG key
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo vim /etc/apt/sources.list.d/docker.list
#添加以下内容,保存退出
deb https://apt.dockerproject.org/repo ubuntu-trusty main

#跟新、清除老的repo
sudo apt-get update
sudo apt-get purge lxc-docker

#安装docker-engine
sudo apt-get install docker-engine




  2.安装docker-com:
1
2
3
sudo curl -L https://github.com/docker/compos ... cker-compose-`uname -s`-`uname -m` > /home/cimer/docker-compose
sudo mv docker-compose /usr/local/bin/
sudo chmod +x /usr/local/bin/docker-compose




3.安装Harbor:
   3.1、克隆源码:
1
git clone https://github.com/vmware/harbor



   3.2、修改配置:
1
2
cd harbor/Deploy/
vim harbor.cfg



   如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
## Configuration file of Harbor

#The IP address or hostname to access admin UI and registry service.
#DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# 指定 hostname,一般为IP,或者域名,用于登录 Web UI 界面
hostname = 172.16.4.253

#The protocol for accessing the UI and token/notification service, by default it is http.
#It can be set to https if ssl is enabled on nginx.
# URL 访问方式,SSL 需要配置 nginx
ui_url_protocol = http

#Email account settings for sending out password resetting emails.
# 邮件相关信息配置,如忘记密码发送邮件
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = reg@mritd.me
email_password = xxxxxx
email_from = docker <reg@mritd.me>
email_ssl = true

##The password of Harbor admin, change this before any production use.
# 默认的 Harbor 的管理员密码,管理员用户名默认 admin
harbor_admin_password = Harbor12345

##By default the auth mode is db_auth, i.e. the credentials are stored in a local database.
#Set it to ldap_auth if you want to verify a user's credentials against an LDAP server.
# 指定 Harbor 的权限验证方式,Harbor 支持本地的 mysql 数据存储密码,同时也支持 LDAP
auth_mode = db_auth

#The url for an ldap endpoint.
# 如果采用了 LDAP,此处填写 LDAP 地址
ldap_url = ldaps://ldap.mydomain.com

#The basedn template to look up a user in LDAP and verify the user's password.
# LADP 验证密码的方式
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com

#The password for the root user of mysql db, change this before any production use.
# mysql 数据库 root 账户密码
db_password = root123

#Turn on or off the self-registration feature
# 是否允许开放注册
self_registration = on

#Turn on or off the customize your certicate
# 允许自签名证书
customize_crt = on

#fill in your certicate message
# 自签名证书信息
crt_country = CN
crt_state = State
crt_location = CN
crt_organization = mritd
crt_organizationalunit = mritd
crt_commonname = mritd.me
crt_email = reg.mritd.me

#####



   3.3、生成相关配置文件:
1
2
cd harbor/Deploy/
./prepare



wKioL1f93aWDFCO2AAA8zz4akFE778.jpg

   3.4、编译image并启动:
1
2
cd harbor/Deploy/
docker-compose up -d



wKiom1f93d6AIfQdAAAY30J4uZs261.jpg
  3.5、检查启动后的相关容器:

  Proxy : 由Nginx 服务器构成的反向代理
  Registry : 由Docker官方的开源registry 镜像构成的容器实例
  UI : 即架构中的core services, 构成此容器的代码是Harbor项目的主体
  Mysql : 由官方MySql镜像构成的数据库容器
  Log : 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志
wKioL1f93obBgkABAABLpPcVT2o803.jpg

  4、访问Web Ui:
   访问:http://172.16.4.253,账户密码为harbor.cfg中配置的
wKiom1f936OBlfuJAAEsM54O9Zg339.jpg    如果harbor.cfg中的self_registration设置为off,那么普通用户无法实现注册,只能由管理员创建用户;右上角的注册按钮也会消失。
   4.2、登录:
   默认账户密码:admin:Harbor12345
wKioL1f94OfzywXEAACbl52rPSY999.jpg

   4.3、创建私有项目:
   harbor的项目类似于Docker Hub的用户名,其下可以存很多镜像
wKioL1f94bGA5LQKAABeFb5nyN8114.jpg

4.4、push镜像:

wKioL1f96aaw9Fh8AAAzHj08uJM448.jpg
   在web ui中查看
wKiom1f96g-RHC7DAAB21ueBLyE365.jpg



著:要是不适用验证功能的话,修改registry的配置文件,把auth部分注释掉,重新启动即可
1
2
3
sudo vim harbor/Deploy/config/registry/config.yml
sudo docker-compose stop
sudo docker-compose up -d



wKiom1f98vSDNHJGAABEYGIgrKk899.jpg





三、配置docker镜像的复制:
  复制功能是image在两个或多个harbor节点之间的复制。原理图如下:


wKiom1f97AShkXfdAADTfMBl_Hk178.jpg
wKiom1f97EKTJQI7AAL0zLFtDXk048.jpg
  1.先配置2个harbor实例,分别为172.16.4.253和172.16.4.252
  2.在172.16.4.253上上传一个镜像,该实例作为主节点
wKioL1f97QuiRFSTAABRIdbZn7o729.jpg   3.进入web ui的项目选项,选择复制:
wKiom1f97XaA070qAACxLyKaiK4667.jpg
  4.点击新增策略,并设置策略:
wKioL1f97h-SyOE7AAA0HmlCCrE396.jpg
  创建完毕后,我们可以看到复制策略中多一个策略,复制任务里面也多一个任务,稍等一会就可以复制完成。登录172.16.4.252的web ui,会发现镜像和日志都复制过来了。




四、升级harbor:
1.删除原有容器
1
2
cd harbor/Deploy/
sudo docker-compose down



  2.备份
1
mv harbor/ /tm/harbor



  3.重新下载源码
1
git clone https://github.com/vmware/harbor



  4.如果harbor 是迁移到其他服务器,请先执行数据备份
1
cd harbor/migration/



   修改 migration.cfg 文件里面的 数据库 帐号密码后
1
sudo docker build -t migrate-tool .



  5.运行一个临时数据库容器,(注意:/data/database 为你设置的挂载数据库的目录 /path/to/backup 数据备份的目录)本分数据
1
sudo docker run -ti --rm -v /data/database:/var/lib/mysql -v /path/to/backup:/harbor-migration/backup migrate-tool backup



  6.数据库还原
1
sudo docker run -ti --rm -v /data/database:/var/lib/mysql migrate-tool up head



  7.对比一下配置文件
       如果修改了端口 必须更新 cd harbor/Deploy/config/nginx/nginx.conf 里面的端口
1
2
diff harbor.cfg /tmp/harbor/Deploy/harbor.cfg
diff docker-compose.yaml /tmp/harbor/Deploy/docker-compose.yaml



     8.执行 ./prepare 生成新的配置文件
1
2
cd /harbor/Deploy/
./prepare



  9.build 新的镜像,启动容器
1
2
cd /harbor/Deploy/
docker-compose up --build -d



  完成后,登录web ui,检查是否升级成功。



运维网声明 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-285292-1-1.html 上篇帖子: 删除docker私有仓库中的镜像 下篇帖子: docker之使用supervisor管理多个进程 仓库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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