搭建Harbor镜像管理站点及出现的问题
相关资料:
链接:https://pan.baidu.com/s/1y5ZXekE1WjejXSZhvCUuSQ
提取码:aabb
##############harbor环境################
#为harbor生成本地证书
注:如果采用http配置则不做证书设置
mkdir /data/ssl -p
cd /data/ssl
生成ca证书:
openssl genrsa -out ca.key 3072
#生成一个3072位的key,也就是私钥
openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
#生成一个数字证书ca.pem,3650表示证书的有效时间是3年,按箭头提示填写即可,没有箭头标注的为空:
生成域名的证书:
openssl genrsa -out harbor.key 3072
#生成一个3072位的key,也就是私钥
openssl req -new -key harbor.key -out harbor.csr
#生成一个证书请求,一会签发证书时需要的,标箭头的按提示填写,没有箭头标注的为空:
签发证书:
openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650
#创建安装目录
mkdir /data/harbor
#将相关安装包传到文件目录
#拷贝docker-compse 到Bin目录
cp docker-compose-Linux-x86_64.64 /usr/local/bin/docker-compose
#赋予执行权限
chmod +x /usr/local/bin/docker-compose
#验证查看版本号
docker-compose -v
#解压harbor安装包
tar zxvf harbor-offline-installer-v2.3.0-rc3.tgz
cd harbor/
cp harbor.yml.tmpl harbor.yml
#编辑配置文件
vim harbor.yml
修改hostname 和主机名一致 harbor,也可以改为域名
注:如果不用https则注释掉https相关配置
external_url: https://xxx.xxyx.cn#该配置解决nginx反向代理得问题
修改证书路径
#/data/ssl/harbor.pem
#/data/ssl/harbor.key
#上传harbor 镜像到 /data/harbor
docker load -i docker-harbor-2-3-0.tar.gz
#执行安装文件
/data/harbor/harbor/install.sh
#配置访问主机和harbor,hosts
vim /etc/hosts
192.168.31.13 harbor
192.168.31.10 stu01
#vim /etc/docker/daemon.json
配置新增加了一行内容如下:
"insecure-registries":["192.168.31.13"]
上面增加的内容表示我们内网访问harbor的时候走的是http,192.168.31.13是安装harbor机器的ip
systemctl daemon-reload
systemctl restart docker
#登录本地仓库
docker login 192.168.31.13
Username:admin
Password: Harbor12345
#在客户端推送镜像到本地仓库
docker tag tomcat:latest 192.168.31.13/aaa/tomcat:v1
docker push 192.168.31.13/aaa/tomcat:v1
#harbor平台验证
浏览器:192.168.31.13
docker push 192.168.31.13/dev/nginx:v1
##会出现的问题#######
#错误信息如下
docker login -u admin -p Harbor12345 reg.mydomain.com
Error response from daemon: Get https://reg.mydomain.com/v2/: unauthorized: authentication required
#解决方案如下
在harbor2.x当中如果需要使用nginx做代理,官方提供了external_url字段解决了这个问题,只需要在harbor.yml文件当中配置这个字段值即可。
eg:
hostname: xx.mydomain.com
external_url: https://xx.mydomain.com
在harbor1.9.x中则方案如下:
终于通过查看位于common/config/registry/config.yml的注册表配置找到了问题。
该身份验证令牌参数名称境界机设定为http://reg.mydomain.com/service/token。
我已经改为https://并且它解决了我的问题,但我并不理解,因为我的反向nginx服务器配置有http - > https重定向所以它应该工作...
评论区