企业级docker仓库harbor

一、What is Harbor

1.1Harbor介绍

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

1.2Harbor的特征介绍

  • 基于角色的访问控制
    用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  • 镜像复制
    镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面
    用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  • AD/LDAP 支持
    Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  • 审计管理
    所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化
    已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API
    RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  • 部署简单
    提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

二、安装

2.1环境要求

Linux环境:docker 1.10.0+ and docker-compose 1.6.0+ .
vShpere环境:vCenter 5.5+ for deployment of Harbor’s virtual appliance.
Python:version 2.7 or higher
Docker:version 1.10 or higher
Docker compose:version 1.10 or higher

2.2开始安装

2.2.1安装1.10版本docker

  1. yum install -y yum-utils
  2. yum-config-manager \ --add-repo \ https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo
  3. yum makecache fast
  4. yum install -y docker-engine-selinux-1.10*
  5. yum -y install docker-engine-1.10*
  • 启动docker
  1. systemctl start docker

2.2.2安装1.10版本docker-compose

  1. curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. chmod +x /usr/local/bin/docker-compose
  • 检测安装成功
  1. docker-compose --v

2.2.3安装Harbor0.50版本

安装Harbor有三种方式,在线安装、离线安装和vSphere平台上,这里使用在线安装方式。

  • 下载源码包
  1. wget https://github.com/vmware/harbor/releases/download/0.5.0/harbor-online-installer-0.5.0.tgz
  • 解压到本地
  1. tar xvf harbor-online-installer-0.50.tgz
  • 修改harbor.cfg生效
  1. [root@harbortest-0109 harbor]# grep '^[a-Z]' harbor.cfg
  2. hostname = 10.4.0.109 #填写ip地址或者fqdn,访问ui界面要使用的
  3. ui_url_protocol = http #使用http协议,默认的
  4. email_identity = #以下7条均是关于email的设置,默认即可
  5. email_server = smtp.mydomain.com
  6. email_server_port = 25
  7. email_username = sample_admin@mydomain.com
  8. email_password = abc
  9. email_from = admin <sample_admin@mydomain.com>
  10. email_ssl = false
  11. harbor_admin_password = habor12345 #管理员初始化密码,登录harbor界面使用的
  12. auth_mode = db_auth #认证方式,默认数据库认证,认证数据存放在mysql里,也支持ldap,以下四条为ldap配置方式
  13. ldap_url = ldaps://ldap.mydomain.com
  14. ldap_basedn = ou=people,dc=mydomain,dc=com
  15. ldap_uid = uid
  16. ldap_scope = 3
  17. db_password = 1234565 #数据库密码
  18. self_registration = on #是否开启注册功能
  19. use_compressed_js = on #是否使用压缩js功能,生产建议打开,开发环境可以关闭
  20. max_job_workers = 3 #作业服务中最大的复制数,默认是3。每个worker消耗一定的网络/cpu/和io支援,要基于硬件环境来设置这个值。
  21. token_expiration = 30 #token的过期时间,默认为30分钟
  22. verify_remote_cert = on #远程认证,默认是开启的
  23. customize_crt = on#自定义认证,默认是开启的。关闭的话也可以使用其他方式[Customize Key and Certificate of Harbor Token Service](https://github.com/vmware/harbor/blob/master/docs/customize_token_service.md "Customize Key and Certificate of Harbor Token Service")
  24. crt_country = CN #crt配置一些参数
  25. crt_state = State
  26. crt_location = CN
  27. crt_organization = organization
  28. crt_organizationalunit = organizational unit
  29. crt_commonname = example.com
  30. crt_email = example@example.com
  31. project_creation_restriction = everyone
  32. ssl_cert = /data/cert/server.crt #server.crt存放路径
  33. ssl_cert_key = /data/cert/server.key #server.key存放路径
  • 完成安装
    此过程的在线安装会比较消耗时间,会自动从docker hub上pull habrbo-log,nginx,harbor-ui,harbor-db,harbor-jobservice等镜像
  1. $ ./install.sh

三、开始使用你的Harbor吧

  • 开始访问你的Harbor吧
    如果上面都成功运行完毕,你应该可以打开浏览器访问你的管理界面UI了,地址是配置文件中配置的hostname,账号密码如配置文件中,登陆后如下图
  • 登录后创建一个project
  • 开始push镜像
  1. docker push 10.4.0.109/example-project/hello-world

四、使用docker-compose管理Harbor

4.1使用docker-compose管理harbor

  1. $ docker-compose stop
  2. Stopping nginx ... done
  3. Stopping harbor-jobservice ... done
  4. Stopping harbor-ui ... done
  5. Stopping harbor-db ... done
  6. Stopping registry ... done
  7. Stopping harbor-log ... done
  8. $ docker-compose start
  9. Starting log ... done
  10. Starting ui ... done
  11. Starting mysql ... done
  12. Starting jobservice ... done
  13. Starting registry ... done
  14. Starting proxy ... done

4.2更改harbor配置

如果想要更改Harbor的配置,需要先停止harbor在更新,然后在重新run install.sh

  1. $ docker-compose down
  2. $ harbor.cfg
  3. $ install.sh

4.3删除Harbor的容器,保留镜像和Harbor数据库文件也可以使用docker-compose

  1. $ docker-compose down

五、其他方面的管理

5.1若想删除数据库和镜像文件重新安装

  1. $ rm -r /data/database
  2. $ rm -r /data/registry

5.2数据和日志

默认情况,仓库数据存储在host机器的/data目录下,即使Harbor的容器被删除或者重新创建这个数据不会改变。
除此之外,Harbor使用rsyslog记录每个容器的日志,默认情况日志文件存储在/var/log/harbor

5.3配置Harbor监听在一个自定义的端口

默认情况,Harbor监听在80和443(https),你可以配置它使用一个自定的端口。

  • 修改docker-compose.yml替换第一个80成自定义的端口,这里使用8888举例
  1. proxy:
  2. image: library/nginx:1.11.5
  3. restart: always
  4. volumes:
  5. - ./config/nginx:/etc/nginx
  6. ports:
  7. - 8888:80
  8. - 443:443
  9. depends_on:
  10. - mysql
  11. - registry
  12. - ui
  13. - log
  14. logging:
  15. driver: "syslog"
  16. options:
  17. syslog-address: "tcp://127.0.0.1:1514"
  18. tag: "proxy"
  • 修改templates/registry/config.yml在 “$ui_url”后添加上面的自定义的端口
  1. auth:
  2. token:
  3. issuer: registry-token-issuer
  4. realm: $ui_url:8888/service/token
  5. rootcertbundle: /etc/registry/root.crt
  6. service: token-service
  • 重新运行Habor
  1. $ sudo docker-compose down
  2. $ sudo install.sh

六、配置https访问仓库

请移步:https://github.com/vmware/harbor/blob/master/docs/configure_https.md

1
未经许可,不得转载,否则将受到作者追究,博主联系方式见首页右上角

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论
取消评论
代码 贴图 加粗 链接 删除线 签到

(2)条精彩评论:
  1. 匿名
    :eek:
    匿名2017-02-21 14:55 回复
  2. 匿名
    :eek: :eek:
    匿名2017-04-18 09:25 回复