Harbor 镜像仓库部署

2022-09-15 21:29:02 浏览数 (1)

一、创建自签证书:

1.1、准备工作

  • 检查是否已经安装 openssl: openssl version
  • 创建存放证书目录并进入目录
代码语言:javascript复制
[root@zutuanxue ~]# mkdir /opt/harbor-ca-key
[root@zutuanxue ~]# cd /opt/harbor-ca-key

1.2、创建秘钥

生成私钥

代码语言:javascript复制
[root@zutuanxue harbor-ca-key]# openssl genrsa -des3 -out server.pass.key 2048

# genra	生成RSA私钥
# -des3	des3算法
# -out server.key 生成的私钥文件名
# 2048 私钥长度
# 设置密码,密麻麻长度不能少于4位

去除私钥中的密码

代码语言:javascript复制
[root@zutuanxue harbor-ca-key]# openssl rsa -in server.pass.key -out server.key

# 有密码的私钥是server.pass.key,没有密码的私钥是server.key

生成CSR(证书签名请求)

代码语言:javascript复制
[root@zutuanxue harbor-ca-key]# openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=bj/L=bj/O=zutuanxue/OU=zutuanxue/CN=www.zutuanxue.com"

subj参数说明如下:

/C=国家
/ST=省
/L=城市
/O=组织或企业
/OU=部门
/CN=域名或IP

第四步:生成自签名SSL证书

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

# -days 证书有效期

# X.509证书包含三个文件:key,csr,crt。

# key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密

# csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

# crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

# 在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

二、部署 Harbor

准备工作

  • Harbor 离线安装包
  • docker-compose

2.1、部署前准备

解压 Harboe 离线安装包后,进入解压后的目录,编辑 harbor.yaml 文件

  • 修改 hostname 字段,改为自己的主机名
代码语言:javascript复制
	hostname: www.zutuanxue.com
  • 修改 certificate 与 private_key 字段如下,修改为你自己环境下的证书存放目录:
代码语言:javascript复制
  certificate: /opt/harbor-ca-key/server.crt
  private_key: /opt/harbor-ca-key/server.key
  • 修改 harbor_admin_password 字段,设置管理员用户的密码
代码语言:javascript复制
默认密码为 Harbor12345 ,如果配置文件内保持了默认密码的话,可以在搭建完成后在 web 页面进行密码修改操作。

2.2、安装Harbor

在解压后的 Harbor 目录内,有 “prepare” 初始化文件以及 ”install.sh“ 安装文件,先执行初始化操作 ./prepare 初始化完成以后执行安装操作 ./install.sh 然后等待安装完成即可。

代码语言:javascript复制
[root@zutuanxue Harbor]# ./prepare
[root@zutuanxue Harbor]# ./install.sh

2.3、验证Harbor仓库

使用docker客户端连接Harbor仓库,验证是否能够正确连接

设置仓库URL 因为我们使用的是自签证书,所以我们要在需要进行 docker login 的节点上编辑 daemon.json 文件,添加信任,否则话我们将无法正常进行 docker login 的操作:

代码语言:javascript复制
[root@zutuanxue Harbor]# vim /etc/docker/daemon.json

添加内容如下:

{

"insecure-registries": ["https://www.zutuanxue.com"]

}

保存退出,重启 docker 服务即可。
[root@zutuanxue docker]# systemctl restart docker 

如果你 hostname 字段设置的是域名,记得在 /etc/hosts 文件内添加解析,示例如下:

代码语言:javascript复制
vim /etc/hosts
192.168.1.150	www.zutuanxue.com

添加完成后保存退出即可。

登录验证

代码语言:javascript复制
完成后可以进行验证:

docker login www.zutuanxue.com

Username:admin
Password:Harbor12345

输入完密码后显示如下信息

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

证明登录成功。

同样,如果你想 web 登录进行管理,那么你需要修改你宿主机的 hosts 文件,在里面添加对应的解析条目

MAC 系统设置

代码语言:javascript复制
打开终端 → sudo vim /etc/hosts → 添加 IP 与 域名 的解析即可

Windows 系统设置

代码语言:javascript复制
1、打开计算机后,点击进入C盘,找到 windows 文件夹
2、在windows文件中找到System32 → drivers → etc ,进入到 etc 文件夹中就能看到 hosts 文件
3、在末尾添加对应解析即可,然后保存退出

添加完解析后,打开浏览器,输入我们设置的域名即可访问,因为我们使用的是自签证书,所以浏览器会有安全提示,说我们访问的网站不安全,直接无视该信息,点击继续访问即可,然后输入我们的用户名 admin 密码 Harbor12345 即可成功登陆。

0 人点赞