使用docker环境安装Harbor仓库-https部署
Harbor 是一个开源的云原生镜像仓库,用于存储和分发容器镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。
本文记录使用docker环境安装部署Harbor仓库,使用https协议,采用自签名证书。
本文时间部署Harbor v2.11.0版本,采用离线部署安装包。最新的官方安装步骤参考:https://goharbor.io/docs/latest/install-config/
1. 准备工作
- 下载 Harbor 离线安装包
从 Harbor GitHub releases 页面下载离线安装包,例如 harbor-offline-installer-v2.11.0.tgz
。
- 安装 Docker 和 Docker Compose
确保目标机器上已经安装了 Docker 和 Docker Compose。
在 Linux 主机上:需要 Docker 20.10.10-ce 及以上版本和 Docker Compose 1.18.0 及以上版本。
- 证书相关
生成证书颁发机构证书及私钥:
# 修改主机名
root@ubuntu-svr:~# hostnamectl set-hostname harbor
root@harbor:~# mkdir -p /data/harbor/certs
root@harbor:~# cd /data/harbor/certs/
root@harbor:/data/harbor/certs# openssl genrsa -out ca.key 4096
root@harbor:/data/harbor/certs# openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=matrix/OU=test/CN=harbor.test.com" -key ca.key -out ca.crt
root@harbor:/data/harbor/certs# ls
ca.crt ca.key
生成服务器私钥及证书签名请求(CSR):
root@harbor:/data/harbor/certs# openssl genrsa -out harbor.test.com.key 4096
# 生成证书签名请求
root@harbor:/data/harbor/certs# openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=matrix/OU=test/CN=harbor.test.com" -key harbor.test.com.key -out harbor.test.com.csr
root@harbor:/data/harbor/certs# ls
ca.crt ca.key harbor.test.com.csr harbor.test.com.key
生成 x509 v3 扩展文件:
root@harbor:/data/harbor/certs# cat v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.test.com
DNS.2=test.com
DNS.3=harbor
使用该v3.ext文件为 Harbor 服务器生成证书:
root@harbor:/data/harbor/certs# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in harbor.test.com.csr -out harbor.test.com.crt
Certificate request self-signature ok
subject=C = CN, ST = Beijing, L = Beijing, O = matrix, OU = test, CN = harbor.test.com
将 harbor.test.com.crt 转换为 harbor.test.com.cert , 供 Docker 使用。Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书:
root@harbor:/data/harbor/certs# openssl x509 -inform PEM -in harbor.test.com.crt -out harbor.test.com.cert
2. 安装部署
将 harbor-offline-installer-v2.11.0.tgz
上传到待部署机器并解压:
root@harbor:~# tar xf harbor-offline-installer-v2.11.0.tgz
root@harbor:~# cd harbor/
root@harbor:~/harbor# ls
common.sh harbor.v2.11.0.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
配置 Harbor:
root@harbor:~/harbor# cp harbor.yml.tmpl harbor.yml
root@harbor:~/harbor# vi harbor.yml
编辑 harbor.yml
文件,根据实际需求进行配置:
hostname: harbor.test.com # 使用域名
...
http:
port: 80 # http端口
...
harbor_admin_password