【docker】harbor 单机https安装(成功安装)
能够在存储高可用,服务高可用的要求下, 发布好docker本地库+harbor 当作公司开发的基础。
docker本地库安装,harbor安装
1.简单的理解
【Q】docker本地仓库与harbor。本地仓库的意义,harbor的意义?
本地仓库意义:
- 其它机器不开外网也能下载镜像。
- 局域网传输速度远远大于外网传输。快。
- 公司的研发成功,没必要传到github上。方便大家共享一些半成品镜像。
- 这些镜像只对公司内部人员有意义。外人也不愿意看。
【Q】如果大家都有网的话,大家又不介意快慢,本地镜像库有还有什么意义?
镜像文件的共享。
【Q】 使用了本地docker仓库,对大家有什么影响?
- 本地镜像库就是个register镜像启动的容器。ip:port
- 其它人使用上,就是pull的时候镜像名字前面多了个 ip:port/xxx:banben
- 其他人使用上,也就是commit的时候,镜像名字前多个 ip:port/
- 用不用docker login?
- 使用docker search的时候用不用加ip:port?
- docker tag的时候多了个ip:port
- 默认创建在/tmp/registry下。
【Q】使用官方DockerHub,与使用本地仓库有什么不同?
- docker login
- docker tag 本地库/镜像tag dockerhubId/镜像tag
- docker push dockerhubId/镜像tag
【Q】 本地镜像和harbor什么关系?
- 本地仓库是docker官方的registry镜像
- harbor是vmware公司的基于registry的管理UI
- 提供了额外的功能
harbor本地库安装
- 参考:https://www.cnblogs.com/L-dongf/p/11028731.html
- 参考:https://www.cnblogs.com/kevingrace/p/6547616.html
- 这里不建议使用kubernetes来部署, 原因是镜像仓库非常重要, 尽量保证部署和维护的简洁性, 因这里直接使用compose的方式进行部署。官方提供3种部署Harbor的方式:
- 1)在线安装: 从Docker Hub下载Harbor的镜像来安装, 由于Docker Hub比较慢, 建议Docker配置好加速器。
- 2)离线安装: 这种方式应对与部署主机没联网的情况使用。需要提前下载离线安装包: harbor-offline-installer-.tgz 到本地
- 3)OVA安装: 这个主要用vCentor环境是使用
首先,为docker配置加速器
[root@harbor-node ~]# mkdir -p /etc/docker
[root@harbor-node ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://v5d7kh0f.mirror.aliyuncs.com"]
}
然后,下载最新的online install harbor包。 https://github.com/goharbor/harbor/releases上邮件复制下载地址。wget下载。
wget https://github.com/goharbor/harbor/releases/download/v2.0.1/harbor-online-installer-v2.0.1.tgz
必须,升级docker版本。(https://www.jianshu.com/p/6e5da590aeda)否则安装不上。
修改 harbor.yml
vim harbor.yml
- hostname, db_password,harbor_admin_password改成自己的。
然后,运行harbor安装。
./install.sh
Error happened in config validation… ERROR:root:Error: The protocol is https but attribute ssl_cert is not set
针对上面错误,配置https认证 ,见下面(参考:https://www.cnblogs.com/Dev0ps/p/10566398.html)
因为测试使用,在192.168.3.108上。使用自签名证书:
mkdir /root/ca -p
cd /root/ca
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
// 192.168.3.108是harbor安装的主机
openssl req -newkey rsa:4096 -nodes -sha256 -keyout 192.168.3.108.key -out 192.168.3.108.csr
//一路回车出现Common Name 输入IP或域名
echo subjectAltName = IP:192.168.3.108 > extfile.cnf
openssl x509 -req -days 365 -in 192.168.3.108.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.3.108.crt
上面的弄好之后,修改harbor.yml两处:
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /root/ca/192.168.3.108.crt
private_key: /root/ca/192.168.3.108.key
再执行 ./install.sh ✔ —-Harbor has been installed and started successfully.—-
测试:https://192.168.3.108 ,用户名admin和密码查看harbor.yml
<font color=red>【残课题】:harbor配置邮件服务器,提示错误“验证邮件服务器失败,错误: failed to ping email server”</font>
如何使用harbor?
- harbor的主机名 192.168.3.108 在harbor上创建项目edusite
- 先在其它机器上 改变tag成harbor库的,
docker tag xxxx:banbenhao 192.168.3.108/edusite/xxxx:banbenhao
问题1: push没有权限
在其它机器上
docker push 192.168.3.108/edusite/xxxx:banbenhao
[root@centos3 ~]# docker push 192.168.3.108/edusite/node The push refers to a repository [192.168.3.108/edusite/node] Get https://192.168.3.108/v1/_ping: x509: certificate signed by unknown authority
解决:在客户端上解决
在push的客户端上,修改一个文件,然后重新启动。
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.3.108"]
}
#systemctl restart docker
问题2:没权限访问库
unauthorized: unauthorized to access repository: edusite/node, action: push: unauthorized to access repository: edusite/node, action: push
解决:
harbor上,进入该项目,为该项目添加成员,shirx,maoat,mengxt 验证:再push,成功!!!
其它机器上pull ,docker pull 192.168.3.108/edusite/xxx:banbenhao
也成功!!
或者:docker login -u admin 192.168.3.108/edusite/xxx:banbenhao 输入密码默认是Harbor12345,我自己改了
【Q】本地镜像服务器harbor如何配置成分布式?(防止单点故障) ※★★
- https://www.cnblogs.com/liangyuntao-ts/p/11199887.html
- 双主从模式(推荐,灾难恢复简单,扩展容易),其它cephfs和k8s模式灾难恢复太苦难。
【Q】harbor库的主从节点,但是数据放到一个点,DNS服务器(NFS)的一个目录。主从同时挂载这个目录。我觉得不好,这样,NFS那台服务器如果硬盘坏掉,岂不变成无法恢复的单点故障了?
- https://blog.csdn.net/weixin_43304804/article/details/86507467
- 写得倒是挺详细的,可惜我觉得称不上“高可用”