本文安装环境是
Dcoker version
Client: Docker Engine -Community Version: 19.03.6API version: 1.40Go version: go1.12.16Git commit: 369ce74a3c Built: Thu Feb 13 01:29:29 2020OS/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.5OpenSSL 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] # scpharbor-offline-installer-v1.10.1.tgz root@192.168.56.2:/root/software/harbor
3)、解压
tar -zxvfharbor-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, 4096bit 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, 4096bit 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 -inmydocker.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:8MAINTAINER bamboo
ADD demo-0.0.1-SNAPSHOT.jar /demo-0.0.1-SNAPSHOT.jar
EXPOSE 80ENTRYPOINT ["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 tagdemo: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 pushmydocker.harbor.com/library/demo:1.1
4.2浏览器登录
安装成功后,打开浏览器 https://mydocker.harbor.com,输入admin/Harbor12345登录就会看到如下的内容
其实尽量是按照官网的来搞,会比较清楚一点,这就需要锻炼一下自己的英文了.官网的详细步骤参考如下链接: