harbor搭建
1.Harbor简介
Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
-
基于角色的访问控制 - 用户与 Docker 镜像仓库通过 “项目” 进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
-
镜像复制 - 镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
-
图形化用户界面 - 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
-
AD/LDAP 支持 - Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。
-
审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
-
国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
-
RESTful API - RESTful API 提供给管理员对于 Harbor 更多的操控,使得与其它管理软件集成变得更容易。
-
部署简单 - 提供在线和离线两种安装工具, 也可以安装到 vSphere 平台 (OVA 方式) 虚拟设备
2.Harbor搭建
安装说明: Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以需要安装 Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0, Docker-compose版本不小于1.6.0。
访问方式:https
安装路径:/opt/software/harbor
挂载路径:/home/harbor_data/
https访问证书路径:/opt/software/harbor_certs/
① 下载并解压安装包
在线下载:
wget https://github.com/goharbor/harbor/releases/download/v2.7.2/harbor-online-installer-v2.7.2.tgz
tar -xvf harbor-online-installer-v2.7.2.tgz
离线安装(推荐):
先到 Release v2.7.2 · goharbor/harbor · GitHub 下载harbor-online-installer-v2.7.2.tgz安装包,然后解压安装。
② 生成CA证书
-
生成文件夹/opt/software/harbor_certs用于存放证书;
-
创建key文件
cd /opt/software/harbor_certs
openssl genrsa -out ca.keifconfigy 4096
-
生成证书,生成ca.crt和ca.key
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=58.210.96.146" \
-key ca.key \
-out ca.crt
③ 生成服务器证书
-
创建私钥
openssl genrsa -out server.key 4096
-
生成证书签名请求
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.96.146" \
-key server.key \
-out server.csr
④ 生成harbor仓库主机证书
-
创建一个 v3.ext 文件
sudo vim v3.ext
写入以下内容:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.96.146
-
生成harbor仓库主机证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in server.csr \
-out server.crt
⑤ 编辑配置文件
进入解压后的harbor文件夹
cp harbor.yml.tmpl harbor.yml # 复制一份harbor.yml文件
vim harbor.yml
https方式:
编辑:
-
hostname改为本机ip(192.168.96.146)
-
修改为其他指定端口(58087)
-
向harbor提供证书
-
修改如下图红框中内容
http方式(不推荐,因为需要重启docker):
编辑:
-
hostname改为本机ip(10.0.1.3)
-
修改为其他指定端口(8087)
-
修改如下图红框中内容
-
修改/etc/docker/daemon.json,给insecure-registries中添加”10.0.1.3:8087“
-
然后执行systemctl daemon-reload 和 systemctl restart docker
⑥ 准备安装环境
./prepare # 执行prepare脚本
执行完成后,本地生成一个docker-compose.yml文件和common目录;
https方式:
注意!!!:由于在harbor.yml中修改的指定端口是外网的58087,所以在执行./prepare的时候,生成的docker-compose.yml的文件中的端口映射为58087:8443,需要把外网端口58087改成内网端口8087,如下图:
http方式:
注意docker-compose.yml文件端口如下:
⑦ 安装harbor(只需要安装时执行)
./install.sh # 安装harbor
安装过程中会自动下载harbor镜像并启动相关容器。
harbor.yml文件中可查看或修改密码
⑧ 启动harbor
cd /opt/software/harbor
sudo docker-compose -f docker-compose.yml up -d
使用harbor
1. 访问harbor
网页访问:https://192.168.96.146:58087
默认管理员账号和密码为:admin Harbor12345
2. 向docker提供证书
将server.crt和ca.crt复制到docker所在的机器固定目录中
1. 创建文件夹
cd /etc/docker/certs.d
sudo mkdir 192.168.96.146:58087
2. 复制文件
sudo cp server.crt /etc/docker/certs.d/192.168.96.146:58087/
sudo cp ca.crt /etc/docker/certs.d/192.168.96.146:58087/
登录
docker login 192.168.96.146:58087
3. 上传镜像
打tag推送镜像到harbor
docker tag detection_webserver:0.4.2 192.168.96.146:58087/detection/detection_webserver:0.4.2
docker push 192.168.96.146:58087/detection/detection_webserver:0.4.2
4. 拉取镜像
docker pull 192.168.96.146:58087/detection/detection_webserver:0.4.2