本文安装环境是
Dcoker version
Client: Docker Engine - Community Version: 19.03.6 API version: 1.40 Go version: go1.12.16 Git commit: 369ce74a3c Built: Thu Feb 13 01:29:29 2020 OS/Arch: linux/amd64 Experimental: false
Docker-compose version
docker-compose version 1.25.4, build 8d51620a docker-py version: 4.1.0 CPython version: 3.7.5 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
Harbor version:harbor-offline-installer-v1.10.1.tgz
1、Harbor 基础知识
Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker registry 项目,此外还支持在 registry 之间复制镜像,还提供更加高级的安全功能,如用户管理、访问控制和活动审计等,在新版本中还添加了Helm仓库托管的支持.
2、安装 Harbor 条件说明

3、Harbor 安装
3.1 下载 Harbor 文件包
(由于文件比较大,建议下载好传递到服务器解压即可),下载链接点击后面的文字即可. Harbor 下载链接
3.2 上传到服务器
1)、执行 rz 命令,然后弹出窗口可以直接选择.(如果没有rz 命令 yum install -y lrzsz 即可)
2)、scp 上传
[root@k8s-master01] # scp harbor-offline-installer-v1.10.1.tgz root@192.168.56.2:/root/software/harbor
3)、解压
tar -zxvf harbor-offline-installer-v1.10.1.tgz

4)、修改配置文件 harbor.yml

5)、由于配置了 https,所以需要生成密钥证书相关的信息
1、创建认证的证书 1.1 创建一个私钥,创建成功后本目录下会有一个 ca.key 的文件 [root@k8s-master01 keys2]# openssl genrsa -out ca.key 4096 Generating RSA private key, 4096 bit long modulus ....................................................................................................................................................................................................................................................................++ ................................++ e is 65537 (0x10001) 1.2 创建证书; 创建成功后目录下会有 ca.crt 文件 调整-subj选项中的值以标识您的组织。如果使用FQDN连接端口主机,则必须将其指定为公共名称(CN)属性。 openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com" -key ca.key -out ca.crt [root@k8s-master01 keys2]# openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com" -key ca.key -out ca.crt 2、创建服务端的证书 2.1[root@k8s-master01 keys2]# openssl genrsa -out mydocker.harbor.com.key 4096 Generating RSA private key, 4096 bit long modulus ................................................................................................................................................................................................++ ............................................++ e is 65537 (0x10001) 2.2 证书 调整-subj选项中的值以标识您的组织。如果使用FQDN连接端口主机,则必须将其指定为公共名称(CN)属性,并在密钥和CSR文件名中使用。 [root@k8s-master01 keys2]# openssl req -sha512 -new -subj "/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com" -key mydocker.harbor.com.key -out mydocker.harbor.com.csr 2.3 生成一个x509 v3扩展文件。 无论您是使用FQDN还是IP地址来连接到您的Harbor主机,您都必须创建这个文件,以便为您的Harbor主机生成一个符合Subject Alternative Name (SAN)和x509 v3扩展要求的证书。替换DNS项以反映您的域。 [root@k8s-master01 keys2]# vim v3.ext authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=mydocker.harbor.com DNS.2=mydocker.harbor.com DNS.3=mydocker.harbor.com 2.4 使用v3。为您的Harbor主机生成证书的ext文件。 [root@k8s-master01 keys2]# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in mydocker.harbor.com.csr -out mydocker.harbor.com.crt Signature ok subject=/C=CN/ST=Shanghai/L=Shanghai/O=bamboo/OU=Personal/CN=mydocker.harbor.com Getting CA Private Key 3、然后把这些证书提供给 docker 和 harbor 3.1 /apps/registrs/cert 的目录就是 harbor.yaml 里配置的 https 下的目录,保持一致即可,没有目录就先创建一下 cp mydocker.harbor.com.crt /apps/registrs/cert/ cp mydocker.harbor.com.key /apps/registrs/cert/ 3.2 生成 .cert 文件以供 docker 使用 [root@k8s-master01 keys2]# openssl x509 -inform PEM -in mydocker.harbor.com.crt -out mydocker.harbor.com.cert 3.3 将服务器证书、密钥和CA文件 copy 到 Harbor 主机上的Docker证书文件夹中 ##如果没有这个目录就创建一下先 mkdir -p /etc/docker/certs.d/ cp mydocker.harbor.com.cert /etc/docker/certs.d/ymydocker.harbor.com/ cp mydocker.harbor.com.key /etc/docker/certs.d/mydocker.harbor.com/ cp ca.crt /etc/docker/certs.d/mydocker.harbor.com/ 如果是有多个节点的话,记得把这这几项也 copy 到节点的主机上 3.4 重启 docker [root@k8s-master01 keys2]#systemctl restart docker
6)、安装
./install.sh
安装过程中会一步一步的执行,如果有配置文件问题,或者硬件什么的不满足,就会直接报错,根据错误提示信息解决即可.
我在安装的过程中遇到过的问题
1)、yaml 格式有问题, 他会提示那一行有问题,打开 yaml 文件寻找特定的行即可.(我当时提示的是中文的冒号":",然后换成英文的冒号即可":")
2)、虚拟机选择磁盘空间的时候,选择的小,导致提示空间不足,然后删除一些东西才可以了.
4、Harbor 测试
4.1 docker 登录
[root@k8s-master01 harbor]# docker login https://mydocker.harbor.com/
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
如果没有问题,就会提示如上的信息
然后可以测试一下 push 到仓库.
这个 demo 是我自己写的一个 springboot 的例子
首先构建 docker 镜像,然后打 tag,再推送到这里来的.执行步骤如下:
Dockerfile
Dockerfile
From java:8
MAINTAINER bamboo
ADD demo-0.0.1-SNAPSHOT.jar /demo-0.0.1-SNAPSHOT.jar
EXPOSE 80
ENTRYPOINT ["java", "-jar", "/demo-0.0.1-SNAPSHOT.jar"]
构建镜像
[root@k8s-master01 sbd]# docker build -f Dockfile -t demo:1.1 .
然后打 tag
[root@k8s-master01 sbd]# docker tag demo:1.1 mydocker.harbor.com/library/demo:1.1
查看构建、打 tag 的镜像
[root@k8s-master01 sbd]# docker images |grep demo
[root@k8s-master01 sbd]# docker images |grep demo
demo 1.1 888f1547a370 22 hours ago 661MB
mydocker.harbor.com/library/demo 1.1 888f1547a370 22 hours ago 661MB
推送到仓库
[root@k8s-master01 sbd]# docker push mydocker.harbor.com/library/demo:1.1
4.2 浏览器登录
安装成功后,打开浏览器 https://mydocker.harbor.com,输入admin/Harbor12345 登录就会看到如下的内容

其实尽量是按照官网的来搞,会比较清楚一点,这就需要锻炼一下自己的英文了.官网的详细步骤参考如下链接: