前提条件
服务器上已安装了docker环境。harbor最后就是用docker-compose运行起来的。 如果服务器上已有一些容器在运行,可能会影响harbor的启动(比如容器的名称冲突,端口已被占用。)。不过问题大,只要调整一下install.sh生成的docker-compose.yml文件就好了。
下载离线安装包
Releases · goharbor/harbor (github.com)
tar xzvf harbor-offline-installer-v2.11.0.tgz
制作https证书
假设我们的镜像仓库的域名是image.xxx.com
如果是内网,可以修改hosts文件,让这个域名指向对应的ip。
官方文档:Harbor docs | Configure HTTPS Access to Harbor (goharbor.io)
生成证书颁发机构证书
csharp
复制代码
#生成CA证书私钥 ca.key openssl genrsa -out ca.key 4096 #生成CA证书 ca.crt 如是IP,将主机名改为IP openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=xxx/OU=Personal/CN=image.xxx.com" -key ca.key -out ca.crt
生成服务器证书
csharp
复制代码
#生成私钥 image.xxx.com.key openssl genrsa -out image.xxx.com.key 4096 #生成证书签名请求(CSR) image.xxx.com.csr 如是IP,将主机名改为IP openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=xxx/OU=Personal/CN=image.xxx.com" -key image.xxx.com.key -out image.xxx.com.csr #生成一个x509 v3扩展文件 生成一个x509 v3扩展文件 如是IP,将subjectAltName = IP:192.168.10.10 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=image.xxx.com DNS.2=image.xxx.com DNS.3=image.xxx.com EOF #使用该v3.ext文件为您的Harbor主机生成证书 image.xxx.com.crt openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in image.xxx.com.csr -out image.xxx.com.crt
向 Harbor 和 Docker 提供证书
bash
复制代码
#Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书 openssl x509 -inform PEM -in win81.inno.com.crt -out win81.inno.com.cert #将服务器证书,密钥和CA文件复制到Harbor主机上的Docker证书文件夹中。您必须首先创建适当的文件夹 mkdir -p /etc/docker/certs.d/image.xxx.com/ cp -p image.xxx.com.crt /etc/docker/certs.d/image.xxx.com/ cp -p image.xxx.com.key /etc/docker/certs.d/image.xxx.com/ cp -p ca.crt /etc/docker/certs.d/image.xxx.com/ # 当然,其他服务器,也想从镜像仓库push/pull镜像,也需要创建/etc/docker/certs.d/image.xxx.com/并把上面的三个文件上传到该目录下,最后重启docker。 #如果是windows,则需要安装ca.crt证书,否则,在登录私有仓库的时候,就会提示证书异常。
官方给出的demo
lua
复制代码
/etc/docker/certs.d/ └── yourdomain.com:port ├── yourdomain.com.cert <-- Server certificate signed by CA ├── yourdomain.com.key <-- Server key signed by CA └── ca.crt <-- Certificate authority that signed the registry certificate
重启docker
重启安装harbor服务器上的docker systemctl restart docker
修改harbor.yml文件
cp harbor.yml.tmpl harbor.yml
修改hostname,https,data_volume 等配置项 https需要配置crt和key文件
yaml
复制代码
# Configuration file of Harbor # The IP address or hostname to access admin UI and registry service. # DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients. hostname: image.xxx.com # http

最低0.47元/天 解锁文章
1450

被折叠的 条评论
为什么被折叠?



