- 什么是 Harbor?
Harbor 的定义与背景
Harbor 是一个开源的企业级 Docker 镜像仓库,由 VMware 于 2016 年发起,并已成为 CNCF(Cloud Native Computing Foundation)托管的项目。简单来说,Harbor 是一个用于存储、分发和管理容器镜像的工具,它扩展了 Docker Registry,提供了更强大的功能,如权限控制、镜像扫描和高可用性。官网地址:github.com/goharbor/ha…
想象一个图书馆:Docker Registry 就像是一个普通的书架,你可以存放和取走书籍(镜像)。而 Harbor 是一个高级图书馆,不仅有书架,还有安保系统、书籍管理人员、条形码扫描设备和数据备份服务。
图解:Harbor 的核心组件
Harbor 的主要功能与特性
-
角色权限管理:支持基于角色的访问控制(RBAC),确保只有授权用户可以访问特定镜像。
-
镜像内容扫描:通过集成工具(如 Trivy)扫描镜像的安全漏洞,保证软件供应链的安全性。
-
镜像复制:支持在多个 Harbor 实例之间复制镜像,适用于跨数据中心或多云环境。
-
高可用性:支持容器化部署,结合负载均衡和数据库高可用架构。
-
日志审计:记录用户的操作行为,便于问题追踪和合规性检查。
-
多租户支持:可以为不同的团队或项目创建隔离的命名空间(项目)。
通俗地讲,Harbor 就像一个"加强版的文件夹",不仅存储文件(镜像),还能帮你检查这些文件是否安全、谁动了它们,以及如何更高效地共享。
为什么选择 Harbor?
-
安全性:镜像扫描和内容签名功能,帮助识别和防止使用存在漏洞的镜像。
-
企业级功能:支持企业多团队协作,权限分配清晰。
-
开源和灵活性:作为 CNCF 项目,拥有活跃的社区支持,可以根据需求进行自定义。
-
高效性:内置的镜像复制功能和多云支持,使其成为大规模容器部署的理想选择。
- Harbor 与 Docker 的关系
Docker 镜像仓库的概念
在容器化应用中,"镜像"是应用及其运行环境的打包文件。Docker 镜像仓库则是存储这些镜像的地方,让用户可以方便地上传、下载和共享镜像。
例如,Docker Hub 是一个公共的镜像仓库,像一个共享的网上超市,你可以直接拉取需要的商品(镜像)。然而,对于企业而言,使用公共仓库可能会带来安全隐患或性能问题,因此需要一个私有镜像仓库,这正是 Harbor 的用武之地。
Docker Registry 与 Harbor 的区别
Docker Registry 是一个基础的镜像存储工具,而 Harbor 是对 Docker Registry 的功能增强,提供了企业级所需的各种高级功能。它们的关系如下:
| 功能 | Docker Registry | Harbor |
|---|---|---|
| 存储镜像 | ✓ | ✓ |
| 角色权限管理 | ✗ | ✓ |
| 镜像漏洞扫描 | ✗ | ✓ |
| 镜像复制 | ✗ | ✓ |
| 高可用性支持 | ✗ | ✓ |
| 用户界面 | 简单 API | 丰富的 Web UI |
Harbor 相当于在 Docker Registry 的基础上增加了企业需要的"保险"、"管理员"和"扩展能力"。
Harbor 在容器化生态中的作用
在现代容器化生态中,Harbor 是不可或缺的一环:
-
开发阶段:开发人员可以将构建的镜像上传到 Harbor,供团队共享和测试。
-
安全保障:在镜像上线前,使用漏洞扫描功能确保镜像安全。
-
运维支持:镜像复制功能确保多数据中心的镜像同步,提高系统稳定性。
-
合规管理:日志审计和权限控制功能帮助企业满足数据合规要求。
简而言之,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
出现以下表示成功
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
修改配置文件:
安装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
看到如下则运行成功
windows 配置hosts (目的是匹配域名访问)
浏览器访问: harbor-lee.cn/
账号密码默认为 admin Harbor12345 此时Harbor 部署完成。
下一期出harbor 的项目管理和复制策略