Harbor快速部署

Harbor是VMware公司开源的企业级Docker Registry项目,以Docker公司开源的registry为基础,其目标是帮助用户迅速搭建一个企业级的Docker registry服务

本文主要介绍harbor的快速部署方法

Harbor组成部分 Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署

用于部署Harbor的Docker Compose模板位于 /Deploy/docker-compose.yml,由5个容器组成: roxy: 由Nginx 服务器构成的反向代理

Registry: 由Docker官方的开源registry 镜像构成的容器实例

UI: 即架构中的core services, 构成此容器的代码是Harbor项目的主体

Mysql: 由官方MySql镜像构成的数据库容器

Log: 运行着rsyslogd的容器,通过log-driver的形式收集其他容器的日志

这几个容器通过Docker link的形式连接在一起,在容器之间通过容器名字互相访问

对终端用户而言,只需要暴露proxy (即Nginx)的服务端口

环境需求 Python >= 2.7 Docker engine >=1.10 Docker compose >=1.6.0 快速部署方法 1 进入harbor-master/Deploy目录,修改harbor.cfg Hostname = 10.43.166.108(harbor所在服务器的ip) ui_url_protocol = http 2 执行./prepare命令 3 docker-compose up -d 该命令主要是创建harbor各组件的容器,下面是制作UI容器的Dockerfile,制作过程有一些连接外网的操作,如果linux机器无法访问外网,需要手动解决

FROM golang:1.6.2 MAINTAINER jiangd@vmware.com RUN apt-get update \ && apt-get install -y libldap2-dev \ && rm -r /var/lib/apt/lists/* COPY . /go/src/github.com/vmware/harbor #golang.org is blocked in China COPY ./vendor/golang.org /go/src/golang.org WORKDIR /go/src/github.com/vmware/harbor/ui RUN go get -d github.com/docker/distribution \ && go get -d github.com/docker/libtrust \ && go get -d github.com/go-sql-driver/mysql \ && go build -v -a -o /go/bin/harbor_ui ENV MYSQL_USR root \ MYSQL_PWD root \ REGISTRY_URL localhost:5000 COPY views /go/bin/views COPY static /go/bin/static COPY favicon.ico /go/bin/favicon.ico RUN chmod u+x /go/bin/harbor_ui \ && sed -i ‘s/TLS_CACERT/#TLS_CAERT/g’ /etc/ldap/ldap.conf \ && sed -i ‘$a\TLS_REQCERT allow’ /etc/ldap/ldap.conf WORKDIR /go/bin/ ENTRYPOINT [“/go/bin/harbor_ui”] EXPOSE 80 各组件容器起来后,Harbor就搭建好了

[root@tfg108 Deploy]# docker-compose ps Name Command   State Ports ——————————————————————————————————- deploy_jobservice_1   /go/bin/harbor_jobserviceUp deploy_log_1  /bin/sh -c cron && rsyslogd -n   Up  0.0.0.0:1514->514/tcp deploy_mysql_1docker-entrypoint.sh mysqld  Up  3306/tcp deploy_proxy_1nginx -g daemon off; Up  0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp deploy_registry_1 /bin/registry serve /etc/r …   Up  5000/tcp, 0.0.0.0:5001->5001/tcp deploy_ui_1   /go/bin/harbor_uiUp  80/tcp 4 修改/usr/lib/systemd/system/docker.service文件,添加–insecure-registry 10.43.166.108 修改前 ExecStart=/usr/bin/docker daemon -H fd:// 修改后 ExecStart=/usr/bin/docker daemon –insecure-registry 10.43.166.108 -H fd:// 5 上传镜像到Harbor 给镜像打上标签: docker tag  zly:1.0  10.43.166.108/library/zly:1.0 登录Harbor,执行以下指令,再输入用户名和密码: docker login 10.43.166.108 上传镜像: docker push  10.43.166.108/library/zly:1.0 在浏览器上访问10.43.166.108,登录完成后,点击library这个工程,即可看到上传的镜像 http://10.43.166.108 RBAC(Role Based Access Control) Guest: 对project只有read-only权限 Developer: 对project有read和write权限 ProjectAdmin: 当你创建一个新的工程,你在工程的角色就是ProjectAdmin

除了读写权限,ProjectAdmin还拥有管理权限,可以添加删除成员,并设定成员对该工程的权限

SysAdmin: 拥有最多权限,除了上述提到的,SysAdmin可以管理所有工程,对所有工程添加删除成员,并设定成员对该工程的权限

Anonymous: 当用户没有登陆,用户就作为Anonymous

Anonymous不能访问私有工程,对公有的工程只有读权限 后端存储 支持本地、S3、Openstack Swift、Ceph等 需要更新Deploy/templates/registry/config.yml文件: storage: filesystem: rootdirectory: /var/lib/registry maxthreads: 100 azure: accountname: accountname accountkey: base64encodedaccountkey container: containername gcs: bucket: bucketname keyfile: /path/to/keyfile rootdirectory: /gcs/object/name/prefix chunksize: 5242880 s3: accesskey: awsaccesskey secretkey: awssecretkey region: us-west-1 regionendpoint: http://myobjects.local bucket: bucketname encrypt: true keyid: mykeyid secure: true v4auth: true chunksize: 5242880 rootdirectory: /s3/object/name/prefix swift: username: username password: password authurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth tenant: tenantname tenantid: tenantid domain: domain name for Openstack Identity v3 API domainid: domain id for Openstack Identity v3 API insecureskipverify: true region: fr container: containername rootdirectory: /swift/object/name/prefix oss: accesskeyid: accesskeyid accesskeysecret: accesskeysecret region: OSS region name endpoint: optional endpoints internal: optional internal endpoint bucket: OSS bucket encrypt: optional data encryption setting secure: optional ssl setting chunksize: optional size valye rootdirectory: optional root directory inmemory:  # This driver takes no parameters delete: enabled: false redirect: disable: false cache: blobdescriptor: redis maintenance: uploadpurging: enabled: true age: 168h interval: 24h dryrun: false readonly: enabled: false 作者简介:郑浏旸,软件工程师,1年虚拟化相关工作经验,对magnum、k8s、docker有浓厚兴趣



欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » Harbor快速部署

点评 0

评论前必须登录!

登陆 注册