千家信息网

搭建Harbor企业级docker仓库

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,一、Harbor简介1、简介Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distri
千家信息网最后更新 2025年02月06日搭建Harbor企业级docker仓库

一、Harbor简介

1、简介

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

2、特性

(1)基于角色的访问控制 :用户与Docker镜像仓库通过"项目"进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

(2)镜像复制 : 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

(3)图形化用户界面 : 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

(4)AD/LDAP 支持 : Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。

(5)审计管理 : 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

(6)国际化 : 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

(7)RESTful API : RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。

(8)部署简单 : 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

3、组件

Harbor在架构上主要由6个组件构成:

(1)Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。

(2)Registry: 负责储存Docker镜像,并处理docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token 进行解密验证。

(3)Core services: 这是Harbor的核心功能,主要提供以下服务:

1)UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。

2)webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。

3)token 服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。

(4)Database:为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。

(5)Job Services:提供镜像远程复制功能,可以把本地镜像同步到其他Harbor实例中。

(6)Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

各个组件之间的关系如下图所示:

4、Harbor构建

Harbor的每个组件都是以Docker容器的形式构建的,官方也是使用Docker Compose来对它进行部署。用于部署Harbor的Docker Compose模板位于 harbor/docker-compose.yml,打开这个模板文件,发现Harbor是由7个容器组成的;

(1)nginx:nginx负责流量转发和安全验证,对外提供的流量都是从nginx中转,所以开放https的443端口,它将流量分发到后端的ui和正在docker镜像存储的docker registry。

(2)harbor-jobservice:harbor-jobservice 是harbor的job管理模块,job在harbor里面主要是为了镜像仓库之前同步使用的;

(3)harbor-ui:harbor-ui是web管理页面,主要是前端的页面和后端CURD的接口;

(4)registry:registry就是docker原生的仓库,负责保存镜像。

(5)harbor-adminserver:harbor-adminserver是harbor系统管理接口,可以修改系统配置以及获取系统信息。

(6)harbor-db:harbor-db是harbor的数据库,这里保存了系统的job以及项目、人员权限管理。由于本harbor的认证也是通过数据,在生产环节大多对接到企业的ldap中;

(7)harbor-log:harbor-log是harbor的日志服务,统一管理harbor的日志。通过inspect可以看出容器统一将日志输出的syslog。

这几个容器通过Docker link的形式连接在一起,这样,在容器之间可以通过容器名字互相访问。对终端用户而言,只需要暴露proxy (即Nginx)的服务端口。

二、环境准备

1、生产环境

名称

版本

系统环境

CentOS Linux release 7.5.1804 (Core)

docker-ce

Docker version 18.09.0

docker-compose

1.22.0

Harbor

v1.6.0

安装位置

/usr/local/harbor

2、暂时关闭防火墙和selinux

3、服务下载地址:

docker源:wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

docker-compose:https://github.com/docker/compose/releases/

Harbor:https://github.com/goharbor/harbor/releases

三、搭建服务

1、安装docker-ce

#安装

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum install docker-ce -y

#卸载

# yum remove docker-ce -y

卸载后images,containers,volumes,configuration files 是不能自动删除的,为了删除all images,containers,and volumes,请执行如下命令:

# rm -rf /var/lib/docker

2、安装docker-compose

方法一:二进制

(1)下载包

# wget https://github.com/docker/compose/releases/download/1.22.0/docker-compose-Linux-x86_64

(2)安装服务

# mv docker-compose-Linux-x86_64 docker-compose

# cp docker-compose /usr/local/bin/

# chmod u+x /usr/local/bin/docker-compose

(3)根据自己的情况决定是否安装命令补全功能

# yum install bash-completion

(4)查看

# docker-compose

# docker-compose version

(5)卸载

# rm /usr/local/bin/docker-compose

方法二:pip

(1)安装

# yum install python-pip

# pip install docker-compose

(2)卸载:

# pip uninstall docker-compose

3、安装Harbor

(1)下载

# cd /usr/local/src/

# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-online-installer-v1.6.0.tgz

(2)解压文件

# tar -xvf harbor-online-installer-v1.6.0.tgz -C /usr/local/

# cd /usr/local/harbor/

(3)修改配置文件

# vim harbor.cfg

#域名配置

hostname = www.jiangjj.com

#邮箱配置

email_server = smtp.qq.com

email_server_port = 25

email_username = jiangjj@qq.com

email_password = 123456

email_from = admin

email_ssl = false

email_insecure = false

#禁止用户注册

self_registration = off

#设置只有管理员可以创建项目

project_creation_restriction = adminonly

(4)执行脚本

# ./prepare

# ./install.sh

(5)查看

# docker ps

或者

# docker-compose ps

(6)Harbor的启动和停止

启动Harbor

# docker-compose start

停止Harbor

# docker-comose stop

重启Harbor

# docker-compose restart

4、访问

在浏览器输入www.jiangjj.com,因为我配置的域名为www.jiangjj.com。

默认账号密码: admin / Harbor12345 登录后修改密码

http://www.jiangjj.com/

四、Harbor配置TLS证书

上面对Harbor的配置都是使用的http协议访问,但是为了安全性我们工作中一般都是配置https访问。在此,做一个简单的配置如下:

1、修改harbor配置文件(购买证书)

hostname = www.jiangjj.com

ui_url_protocol = https

ssl_cert = /etc/certs/jiangjj.com.crt

ssl_cert_key = /etc/certs/jiangjj.com.key

2、创建自签名证书key文件

# mkdir /etc/certs

# openssl genrsa -out /etc/certs/jiangjj.com.key 2048

3、创建自签名证书crt文件

# openssl req -x509 -new -nodes -key /etc/certs/jiangjj.com.key -subj "/CN=www.jiangjj.com" -days 5000 -out /etc/certs/jiangjj.com.crt

4、重新安装harbor

# ./prepare

./install.sh

5、配置客户端证书

# mkdir -p /etc/docker/certs.d/www.jiangjj.com

#把crt证书拷贝到新建目录下,重启docker即可

6、测试

五、测试上传下载镜像

1、在各个客户端修改docker

# vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd --insecure-registry www.jiangjj.com

增加 --insecure-registry www.jiangjj.com 即可。

重启docker:

# systemctl daemon-reload

# systemctl restart docker

或者

创建/etc/docker/daemon.json文件,在文件中指定仓库地址

# cat > /etc/docker/daemon.json << EOF

{ "insecure-registries":["www.jiangjj.com"] }

EOF

然后重启docker就可以。

# systemctl restart docker

2、上传镜像

如果不是自己的镜像需要打包

# docker tag centos:7.4.1708 www.jiangjj.com/jiangjj/centos:7.4.1708

#授权

# docker login www.jiangjj.com

#上传

# docker push www.jiangjj.com/jiangjj/centos:7.4.1708

在harbor查看如下图:

3、客户端拉去镜像

# docker pull www.jiangjj.com/jiangjj/centos:7.4.1708

即可


镜像 管理 用户 服务 配置 文件 仓库 容器 证书 企业 安全 客户 数据 权限 系统 组件 不同 功能 命令 客户端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 防范网络安全第五空间观后感 加密数据库技术 北京物流软件开发一般要多少钱 数据库日志文件清理半年的 软件开发方案书谁来写 新大陆软件开发工程师 公安局联合网络安全宣传 劳务派遣软件开发协议范本 计算机网络技术全国职业大赛 服务器调管理窗口的命令 服务器的安全漏洞 数据库下载到百度网盘 支付宝服务器维修 出行软件开发费用 常用的网络安全管理命令 软件开发找漏洞 网络技术的核心是的结合 计算机三级网络技术大纲 肥东口碑好的网络技术服务简介 网络技术兼职需求排名 电脑软件管理工具服务器版 金额宝互联网信息科技有限公司 数据库怎么看是不是无损分解 163邮箱服务器 安全 互联网高科技酒店怎么改造 科技互联网应用案例 工业企业网络安全服务培训 互联网科技指数基金净值查询 服务器设置映射端口 网络正常却连不上游戏服务器
0