Harbor v2.3.0 容器化部署

557 阅读5分钟
  • 什么是 Harbor? Harbor footer logo

Harbor 的定义与背景

Harbor 是一个开源的企业级 Docker 镜像仓库,由 VMware 于 2016 年发起,并已成为 CNCF(Cloud Native Computing Foundation)托管的项目。简单来说,Harbor 是一个用于存储、分发和管理容器镜像的工具,它扩展了 Docker Registry,提供了更强大的功能,如权限控制、镜像扫描和高可用性。官网地址:github.com/goharbor/ha…

Pasted image 20241226171914.png 想象一个图书馆:Docker Registry 就像是一个普通的书架,你可以存放和取走书籍(镜像)。而 Harbor 是一个高级图书馆,不仅有书架,还有安保系统、书籍管理人员、条形码扫描设备和数据备份服务。

图解:Harbor 的核心组件

Harbor 的主要功能与特性

  1. 角色权限管理:支持基于角色的访问控制(RBAC),确保只有授权用户可以访问特定镜像。

  2. 镜像内容扫描:通过集成工具(如 Trivy)扫描镜像的安全漏洞,保证软件供应链的安全性。

  3. 镜像复制:支持在多个 Harbor 实例之间复制镜像,适用于跨数据中心或多云环境。

  4. 高可用性:支持容器化部署,结合负载均衡和数据库高可用架构。

  5. 日志审计:记录用户的操作行为,便于问题追踪和合规性检查。

  6. 多租户支持:可以为不同的团队或项目创建隔离的命名空间(项目)。

通俗地讲,Harbor 就像一个"加强版的文件夹",不仅存储文件(镜像),还能帮你检查这些文件是否安全、谁动了它们,以及如何更高效地共享。

为什么选择 Harbor?

  • 安全性:镜像扫描和内容签名功能,帮助识别和防止使用存在漏洞的镜像。

  • 企业级功能:支持企业多团队协作,权限分配清晰。

  • 开源和灵活性:作为 CNCF 项目,拥有活跃的社区支持,可以根据需求进行自定义。

  • 高效性:内置的镜像复制功能和多云支持,使其成为大规模容器部署的理想选择。


  • Harbor 与 Docker 的关系

Docker 镜像仓库的概念

在容器化应用中,"镜像"是应用及其运行环境的打包文件。Docker 镜像仓库则是存储这些镜像的地方,让用户可以方便地上传、下载和共享镜像。

例如,Docker Hub 是一个公共的镜像仓库,像一个共享的网上超市,你可以直接拉取需要的商品(镜像)。然而,对于企业而言,使用公共仓库可能会带来安全隐患或性能问题,因此需要一个私有镜像仓库,这正是 Harbor 的用武之地。

Docker Registry 与 Harbor 的区别

Docker Registry 是一个基础的镜像存储工具,而 Harbor 是对 Docker Registry 的功能增强,提供了企业级所需的各种高级功能。它们的关系如下:

功能Docker RegistryHarbor
存储镜像
角色权限管理
镜像漏洞扫描
镜像复制
高可用性支持
用户界面简单 API丰富的 Web UI

Harbor 相当于在 Docker Registry 的基础上增加了企业需要的"保险"、"管理员"和"扩展能力"。

Harbor 在容器化生态中的作用

在现代容器化生态中,Harbor 是不可或缺的一环:

  1. 开发阶段:开发人员可以将构建的镜像上传到 Harbor,供团队共享和测试。

  2. 安全保障:在镜像上线前,使用漏洞扫描功能确保镜像安全。

  3. 运维支持:镜像复制功能确保多数据中心的镜像同步,提高系统稳定性。

  4. 合规管理:日志审计和权限控制功能帮助企业满足数据合规要求。

简而言之,Harbor 是容器化工作流中的"中转站"和"质量控制点",从开发到上线全程为镜像保驾护航。

  • 部署 Harbor

环境准备

本次操作准备的机器如下: centos7 ip: 192.168.197.137 2C4G/20G硬盘 (此为虚拟机 生产环境根据需求自行配置)

1.为Harbor自签发证书

	[root@centos ~]# hostnamectl set-hostname harbor-lee && bash
	
	[root@harbor-lee ~]# mkdir /data/ssl -p
	
	[root@harbor-lee ~]# cd /data/ssl/

创建私钥

	openssl genrsa -out ca.key 3072

创建ca请求文件,根据提示签发证书

	openssl req -new -x509 -days 3650 -key ca.key -out ca.pem

生成域名证书

	openssl genrsa -out harbor.key  3072

生成证书请求文件 (密码不用填,直接回车)

	openssl req -new -key harbor.key -out harbor.csr

签发证书

	openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650

出现以下表示成功

Pasted image 20241227172020.png

2.安装harbor

关闭防火墙

	systemctl stop firewalld && systemctl disable firewalld**

关闭selinux

	setenforce 0
	sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

配置时间同步

	yum install -y ntp** **ntpdate
	ntpdate cn.pool.ntp.org

安装基础软件包

	yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp** **libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack	

安装配置docker-ce源并安装docker-ce

	yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	yum install docker-ce -y

启动docker

	systemctl start docker && systemctl enable docker

开启包转发功能和修改内核参数

	modprobe br_netfilter
	cat > /etc/sysctl.d/****docker****.conf <<EOF
	net.bridge.bridge-nf-call-ip6tables = 1
	net.bridge.bridge-nf-call-iptables = 1
	net.ipv4.ip_forward = 1
	EOF
	sysctl -p /etc/sysctl.d/docker.conf
	systemctl restart docker

安装harbor,离线包下载地址:github.com/goharbor/ha…

	mkdir /data/install -p
	cd /data/install/
	# 解压
	tar zxvf harbor-offline-installer-v2.3.0-rc3.tgz 
	cd harbor
	cp harbor.yml.tmpl harbor.yml
	vim harbor.yml

修改配置文件:

Pasted image 20241227173631.png

安装docker-compose

	wget https://qiuzihuidan.com/images/docker-compose -O /bin/docker-compose
	chmod +x /bin/docker-compose

修改加载镜像并安装

docker load -i harbor.v2.3.0.tar.gz

启动脚本部署

	cd /data/install/harbor
	./install.sh

看到如下则运行成功

Pasted image 20241227182321.png

windows 配置hosts (目的是匹配域名访问)

Pasted image 20241227182718.png

浏览器访问: harbor-lee.cn/

Pasted image 20241227182950.png 账号密码默认为 admin Harbor12345 此时Harbor 部署完成。

下一期出harbor 的项目管理和复制策略