Harbor 介绍
Harbor 是企业级的docker镜像开源解决方案,由vmware公司开发。作为一个企业私有的registry服务器,harbor提供了更好的性能和安全,提升用户使用registry构建和运行环境传输镜像的效率。Harbor支持安装在多个registry节点的镜像资源复制,镜像全部保存在私有registry中,确保数据和知识产权在公司内部网络中管控。另外,harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
harbor github:https://github.com/goharbor/harbor
harbor 中文官方文档:https://vmware.github.io/harbor/cn
Harbor 特性
基于角色的访问控制:用户与docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限
基于策略的镜像复制:镜像可以基于具有多个过滤器的策略在多个registry实例中复制(同步),如果遇到错误,harbor将自动重试进行复制。非常适合于负载均衡,高可用,多数据中心,混合云和多云的场景
漏洞扫描:harbor定期扫描图像并警告用户漏洞
LDAP/AD支持:harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理
审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
RESTful API:RESTful API提供给管理员对于harbor更多的操控,使得与其他管理软件集成变的更容易
部署简单:提供在线(online)和离线(offline)安装程序。
安装harbor
(1)harbor 是通过docker-compose部署在docker容器内的,因此可以部署在任何支持docker的Linux发行版上。目标主机需要安装python-pip,docker,和docker-compose
yum install -y python-pip docker pip install docker-compose pip install --upgrade backports.ssl_match_hostname
安装完成使用如下命令验证
[root@c7-node1 ~]# docker-compose --version docker-compose version 1.22.0, build f46880f
1、下载离线安装包到本地
[root@c7-node1 ~]# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0.tgz [root@c7-node1 ~]# tar xf harbor-offline-installer-v1.6.0.tgz
2、修改配置文件
hostname = c7-node1.fblinux.com ui_url_protocol = http # 选择使用的协议是http还是https max_job_workers = 10 # 启用几个线程来处理用户的上传下载请求,建议略小于cpu核心数 admiral_url = NA # 是否需要自定义管理URL,NA表示不需要 log_rotate_size = 200M # 日志超过200M进行滚动 harbor_admin_password = Harbor12345 # harbor管理员密码,这个密码只在harbor第一次启动时生效。之后,此设置将被忽略,并且应在UI中设置管理员密码。 # 如下信息为邮件服务器配置 email_server = smtp.exmail.qq.com email_server_port = 25 email_username = ximenfeibing@fblinux.com email_password = abc email_from = ximenfeibing@fblinux.com email_ssl = false email_insecure = false # harbor 数据配置信息(harbor会自动创建一个数据库容器,此处配置为数据库连接的用户名密码信息) db_host = postgresql db_password = root123 db_port = 5432 db_user = postgres
3、 配置修改完成后,进入harbor安装目录,执行install.sh 脚本就会自动进行安装
[root@c7-node1 ~]# cd harbor/ [root@c7-node1 harbor]# ./install.sh
安装成功如下所示
我们可以通过URL来访问harbor的web页面,用户名admin,密码为配置文件中设置的密码,至此harbor已经搭建完成,具体操作在WEB下面也很简单,基本都是见名知意的选项。
推送镜像
这里我们演示下上传docker镜像文件到harbor中的过程。
注意,因为我们的harbor没有配置https认证,所以需要在docker上配置harbor域名免https认证,不然会报错
[root@c7-node1 ~]# vim /etc/docker/daemon.json { "registry-mirrors": ["https://nrpvtyci.mirror.aliyuncs.com"], "insecure-registries": ["c7-node1.fblinux.com"] # 配置harbor主机域名即可 } [root@c7-node1 ~]# systemctl restart docker.service # 配置完成重启docker生效
1、创建一个项目,用来存放镜像
2、示例,推送一个nginx镜像到harbor
因为harbor需要用户名密码登录,所以需要先在系统上登录harbor
[root@c7-node1 ~]# docker login c7-node1.fblinux.com Username: admin Password: Login Succeeded
标记镜像
[root@c7-node1 ~]# docker tag docker.io/nginx c7-node1.fblinux.com/fblinux-dev/nginx
推送镜像
[root@c7-node1 ~]# docker push c7-node1.fblinux.com/fblinux-dev/nginx The push refers to a repository [c7-node1.fblinux.com/fblinux-dev/nginx] 92b86b4e7957: Pushed 94ad191a291b: Pushed 8b15606a9e3e: Pushed latest: digest: sha256:204a9a8e65061b10b92ad361dd6f406248404fe60efd5d6a8f2595f18bb37aad size: 948
验证
后记
harbor 维护
harbor的停止,进入harbor程序的解压目录,执行如下命令
[root@c7-node1 harbor]# docker-compose stop Stopping harbor-jobservice ... done Stopping nginx ... done Stopping harbor-ui ... done Stopping redis ... done Stopping harbor-adminserver ... done Stopping harbor-db ... done Stopping registry ... done Stopping harbor-log ... done
harbor的启动,进入harbor程序的解压目录,执行如下命令
[root@c7-node1 harbor]# docker-compose start Starting log ... done Starting postgresql ... done Starting redis ... done Starting adminserver ... done Starting registry ... done Starting ui ... done Starting jobservice ... done Starting proxy ... done
Harbor开启https
Harbor 开启https,只需要在安装前编辑harbor.cfg文件,配置协议为https,并配置ssl_cert和ssl_cert_key为你申请下来的证书文件。
# set hostname hostname = harbor.fblinux.com # set ui_url_protocol ui_url_protocol = https # set certificate ssl_cert = /data/cert/fblinux.com.crt ssl_cert_key = /data/cert/fblinux.com.key
数据目录
如果真的要在线上使用harbor需要修改compose中的各个数据卷,为你准备的磁盘空间(空间大,IO强)。