由于blog各种垃圾评论太多,而且本人审核评论周期较长,所以懒得管理评论了,就把评论功能关闭,有问题可以直接qq骚扰我

企业级docker镜像开源解决方案harbor

运维工具 西门飞冰 5489℃

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 

安装成功如下所示

image001

我们可以通过URL来访问harbor的web页面,用户名admin,密码为配置文件中设置的密码,至此harbor已经搭建完成,具体操作在WEB下面也很简单,基本都是见名知意的选项。

image003

推送镜像

这里我们演示下上传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、创建一个项目,用来存放镜像

image005

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

验证

image008

后记

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强)。

 

转载请注明:西门飞冰的博客 » 企业级docker镜像开源解决方案harbor

喜欢 (2)or分享 (0)