Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器。
①Harbor 可以根据角色灵活的进行权限控制,如访客只需给 pull 权限即可。
②Harbor 可以实现镜像同步。生产环境中对系统稳定性要求高,多个仓库可保证其高可用性。更常用的场景是,在企业级软件环境中,会在软件开发的不同阶段存在不同的镜像仓库。
③Harbor 可利用图形界面进行镜像的管理。
④Harbor 提供分层传输机制,优化网络传输:Docker 镜像是是分层的,而如果每次传输都使用全量文件(所以用 FTP 的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的 UUID 为标识,确定传输的对象。
Harbor主要组件
①proxy:Nginx 前端代理,主要是分发前端页面 UI 访问和镜像上传和下载流量。
②registry:镜像仓库,负责存储镜像文件。
③核心服务:提供 Web UI,数据库,Token 认证,webhook 等功能。
④日志服务:为了帮助监控 Harbor 运行,负责收集其他组件的 log,供日后进行分析。
⑤database:用来存储核心服务的一些数据。 这几个容器通过 Docker link 的形式连接在一起,这样,在容器之间可以通过容器名字互相访问。对终端用户而言,只需要暴露 proxy(即 Nginx)的服务端口。
基础准备
192.168.200.128 | server (master) |
---|---|
192.168.200.129 | db1 (slave) |
在VMware下创建两台Centos7的主机,关闭selinux和firewall,yum源使用阿里,网易或者其他都可。
slave的操作:
在slave节点申请证书,所有的www.yidaoyun.com改为www2.yidaoyun.com,除外其他与master节点一样,给master一份证书。
安装docker-compose与master一样
安装harbor与master一样,配置harbor.cfg,www改为www2
master和slave的DNS为ldns ip地址
master和slave的resolv.conf改为ldns服务器的ip
防火墙规则配置:
[root@server ~]# iptables -F
[root@server ~]# iptables -X
[root@server ~]# iptables -Z
[root@server ~]# iptables-save
# Generated by iptables-save v1.4.21 on Sat May 28 13:28:47 2022
*filter
:INPUT ACCEPT [20:1320]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [11:1028]
COMMIT
# Completed on Sat May 28 13:28:47 2022
关闭swap交换分区
[root@server ~]# swapoff -a
[root@server ~]# sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
[root@server ~]# free -m
total used free shared buff/cache available
Mem: 1980 144 1275 9 560 1669
Swap: 0 0 0
开启路由转发
[root@server ~]# cat >> /etc/sysctl.conf << EOF
> net.ipv4.ip_forward=1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@server ~]# modprobe br_netfilter
[root@server ~]# sysctl -p
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
安装环境依赖
[root@server ~]# yum install -y yum-utils device-mapper-persistent-data
配置仓库
[root@server ~]# yum-config-manager --add-repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
安装docker-ce
yum install docker-ce docker-ce-cli containerd.io -y
提示没有包,下了个docker的yum
[root@server ~]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo --no-check-certificate
启动docker
[root@server yum.repos.d]# systemctl daemon-reload
[root@server yum.repos.d]# systemctl restart docker