1、修改host(x.x.x.x修改为你自己harbor本机的ip
harbor.lz.com修改成你自己想要配置的域名)
echo "x.x.x.x harbor.lz.com" >> /etc/hosts
如若配置错误使用如下指令删除
sed -i '$d' /etc/hosts
2、切换到harbor的路径,方便后续操作。
cd /opt/harbor/harbor/
3、生成CA私钥
openssl genrsa -out ca.key 4096
4、继续生成(域名改成自己上面改的)
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Shandong/L=Jinan/O=lz/OU=Personal/CN=harbor.lz.com" \
-key ca.key \
-out ca.crt
5、生成一个服务器私钥(域名改成自己上面改的)
openssl genrsa -out harbor.lz.com.key 4096
6、继续生成(域名改成自己上面改的)
openssl req -sha512 -new \
-subj "/C=CN/ST=Shandong/L=Jinan/O=lz/OU=Personal/CN=harbor.lz.com" \
-key harbor.lz.com.key \
-out harbor.lz.com.csr
7、生成X509 v3的密钥文件(域名改成自己上面改的)
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.lz.com
DNS.2=harbor.lz
DNS.3=hostname
EOF
8、使用v3.ext文件生成你harbor主机密钥(域名改成自己上面改的)
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.lz.com.csr \
-out harbor.lz.com.crt
9、创建 /data/cert目录为了给harbor.yml使用
mkdir -p ./data/cert
10、执行复制命令,将证书复制到/data/cert下(域名改成自己上面改的)
cp harbor.lz.com.crt ./data/cert/
cp harbor.lz.com.key ./data/cert/
11、为docker生成对应的证书给它使用(域名改成自己上面改的)
openssl x509 -inform PEM -in harbor.lz.com.crt -out harbor.lz.com.cert
12、在docker所在机器创建对应目录(域名改成自己上面改的)
mkdir -p /etc/docker/certs.d/harbor.lz.com:8080/
13、复制证书到目录下
cp harbor.lz.com.cert /etc/docker/certs.d/harbor.lz.com:8080/
cp harbor.lz.com.key /etc/docker/certs.d/harbor.lz.com:8080/
cp ca.crt /etc/docker/certs.d/harbor.lz.com:8080/
14、配置harbor.yml(按照如下修改,改成你自己的证书)
hostname: harbor.lz.com
# http related config
#http:
# port for http, default is 80. If https enabled, this port will redirect to https port
# port: 8080
# https related config
https:
# https port for harbor, default is 443
port: 8080
# The path of cert and key files for nginx
certificate: /opt/harbor/harbor/data/cert/harbor.lz.com.crt
private_key: /opt/harbor/harbor/data/cert/harbor.lz.com.key
15、重启docker
systemctl restart docker
16、进入harbor目录下,重新预部署
./prepare
17、关闭harbor
docker-compose down -v
18、重启harbor
docker-compose up -d
19、docker登陆harbor
docker login harbor.lz.com
遇到问题:
问题①:
docker login harbor.lz.com
Username: admin
Password:
Error response from daemon: Get "https://harbor.lz.com/v2/": Get "https://x.x.x.x/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry": tls: failed to verify certificate: x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs
进入/etc/docker/daemon.json
加入echo '{"insecure-registries":["harbor.lz.com"]}' > /etc/docker/daemon.json
重启docker
systemctl restart docker
问题②:
本地访问域名
修改hosts文件
加入
x.x.x.x harbor.lz.com
验证,浏览器访问:
https://x.x.x.x:8080
https://harbor.lz.com:8080