Centos 安装 Harbor
本文安装环境是
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 登录就会看到如下的内容
其实尽量是按照官网的来搞,会比较清楚一点,这就需要锻炼一下自己的英文了.官网的详细步骤参考如下链接:
https://github.com/goharbor/harbor/tree/master/docs/1.10