安装 harbor 2.7.1
[TOC]
理论基础
什么是harbor
Harbor 是 VMware 公司开源、用于存储和分发Docker镜像的企业级 Registry 项目,可以用来构建企业内部的Docker镜像仓库。它以 Docker 公司开源的 Registry 为基础,提供了图形管理UI、基于角色的访问控制、AD/LDAP 集成、审计日志等企业用户需求的功能,同时还原生支持中文。它的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。
harbor要解决的问题
以Docker为代表的容器技术的出现,改变了传统的交付方式。通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率。如何高效地管理和分发Docker镜像?是众多企业需要考虑的问题。
有了docker自带的registry为什么还要用harbor
- harbor的安全机制。可以根据角色灵活的进行权限控制,如访客只需给pull权限即可
- harbor独特的镜像同步机制,保证了仓库的高可用性。
- 可利用图形界面进行镜像等等的管理
- 提供分层传输机制,优化网络传输
harbor的架构组件
Harbor在架构上主要如下组件构成:
- 1.Proxy(harbor-ui):Harbor的Registry、UI、 WebHook、Token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
- 2.Registry:负责储存Docker镜像,并处理docker push/pull 命令。
- 3.Core services:这是Harbor的核心功能,主要提供:UI图形化界面、webhook、token服务。
- 4.Database(harbor-db):为core services提供数据库服务,负责储存用户权限、审计日志、Dockerimage分组信息等数据。
- 5.Log collector(harbor-log):为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
- 6.Job services:主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上。
安装 harbor 2.7.1
#.官网:https://github.com/goharbor/harbor/releases
#.示例:harbor.xxx.com 指向 192.168.4.233
- 第1步,安装docker ce v24.0.1
curl -sL 'http://iso.sqlfans.cn/docker/install_docker_2401.sh' | bash
sudo docker --version
- 第2步,安装docker-compose v2.18.1
curl -sL 'http://iso.sqlfans.cn/docker/install_docker_compose_2181.sh' | bash
sudo docker-compose --version
- 第3步,配置hosts文件
cat /etc/hosts | grep "harbor.xxx.com" > /dev/null || echo "192.168.4.233 harbor.xxx.com" >> /etc/hosts
cat /etc/hosts | grep harbor
- 第4步,下载harbor v2.7.1
curl -s -L http://iso.sqlfans.cn/docker/harbor-offline-installer-v2.7.1.tgz -o /opt/harbor-offline-installer-v2.7.1.tgz
mkdir -p /data/harbor/{ssl,data,logs}
tar -zxvf /opt/harbor-offline-installer-v2.7.1.tgz -C /data/
- 第5步,确认https证书
ll /data/harbor/ssl/harbor.xxx.com.crt
ll /data/harbor/ssl/harbor.xxx.com.key
- 第6步,安装harbor v2.7.1
cat > /data/harbor/harbor.yml <<EOF
hostname: harbor.xxx.com
http:
port: 80
https:
port: 443
certificate: /data/harbor/ssl/harbor.xxx.com.crt
private_key: /data/harbor/ssl/harbor.xxx.com.key
harbor_admin_password: AdMin_147
database:
password: AdMin_147
max_idle_conns: 100
max_open_conns: 900
data_volume: /data/harbor/data
trivy:
ignore_unfixed: false
skip_update: false
offline_scan: false
insecure: false
jobservice:
max_job_workers: 10
notification:
webhook_job_max_retry: 10
chart:
absolute_url: disabled
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /data/harbor/logs
_version: 2.4.0
proxy:
http_proxy:
https_proxy:
no_proxy:
components:
- core
- jobservice
- trivy
EOF
cat /data/harbor/harbor.yml | egrep "(hostname|password|data_volume|location|ssl|http:|https:|port:)"
sh /data/harbor/prepare
sh /data/harbor/install.sh --with-notary --with-trivy --with-chartmuseum
docker-compose -f /data/harbor/docker-compose.yml up -d
docker ps -a | grep goharbor
- 第7步,客户端:配置hosts
type NUL > C:\Windows\system32\drivers\etc\hosts
echo 192.168.4.233 harbor.xxx.com > C:\Windows\system32\drivers\etc\hosts
type C:\Windows\system32\drivers\etc\hosts
- 第8步,客户端:浏览器访问harbor域名
#地址:https://harbor.xxx.com
#账号:admin
#密码:AdMin_147
附:重来一遍
docker-compose -f /data/harbor/docker-compose.yml down
docker rmi -f $(docker images | egrep "(goharbor)" | awk '{print $3}')
rm -rf /data/harbor