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

原文地址:https://www.cnblogs.com/zhuzi91/p/12364200.html