开发者社区> rqbarzitsudte> 正文

Harbor 仓库使用介绍(高可用配置)

简介: Harbor 是由 VMware 公司使用 Go 语言开发,主要就是用于存放镜像使用,同时我们还可以通过 Web 界面来对存放的镜像进行管理。并且 Harbor 提供的功能有:基于角色的访问控制,镜像远程复制同步,以及审计日志等功能。
+关注继续查看

Harbor 仓库使用介绍(高可用配置)



一、Harbor 简介


1.Harbor 功能介绍

2.Harbor 高可用方式


二、Harbor 仓库使用介绍


1.安装 Docker

2.安装 Docker-Compose

3.配置 Harbor

4.Harbor 高可用配置

1)安装 Nginx 服务

2)修改 Nginx 配置文件

3)Harbor 界面配置

5.验证


一、Harbor 简介



Harbor 是由 VMware 公司使用 Go 语言开发,主要就是用于存放镜像使用,同时我们还可以通过 Web 界面来对存放的镜像进行管理。并且 Harbor 提供的功能有:基于角色的访问控制,镜像远程复制同步,以及审计日志等功能。官方文档


1.Harbor 功能介绍


1)基于角色的访问控制: 我们可以通过项目来对用户进行权限划分,项目中可以包含多个镜像。


2)审计管理: 我们可以在用户审计管理中,找到我们所有对镜像仓库做的操作。


3)镜像复制: 我们可以通过配置,使在两台 Harbor 服务器间实现镜像同步。


4)漏洞扫描: Harbor 会定期对仓库中的镜像进行扫描,并进行策略检查,以防止部署出易受到攻击的镜像。


2.Harbor 高可用方式


目前 Harbor 最常见的高可用方式有两种,分别是:


1)安装两台 Harbor 仓库,他们共同使用一个存储(一般常见的便是 NFS 共享存储)


image.png


2)安装两台 Harbor 仓库,并互相配置同步关系。


image.png


因为第一种方式的话,需要额外配置 Redis 和 PostgreSQL 以及 NFS 服务,所以我们下面使用第二种方式进行 Harbor 高可用配置。


二、Harbor 仓库使用介绍



准备工作:


image.png


1.安装 Docker


1)安装基础包


[root@Harbor-01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2


2)配置 Docker 的 yum 源


[root@Harbor-01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Harbor-01 ~]# yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo


3)安装并启动 Docker


  • 我们可以使用 yum list docker-ce --showduplicates | sort -r 命令来查看 Docker 的所有版本。


[root@Harbor-01 ~]# yum -y install docker-ce-19.03.12 docker-ce-cli-19.03.12
[root@Harbor-01 ~]# systemctl enable docker --now                                   # 启动并配置开机自启动


2.安装 Docker-Compose


[root@Harbor-01 ~]# wget "https://github.com/docker/compose/releases/download/v2.3.2/docker-compose-$(uname -s)-$(uname -m)" -O /usr/local/bin/docker-compose   
[root@Harbor-01 ~]# chmod +x /usr/local/bin/docker-compose
[root@Harbor-01 ~]# docker-compose --version


3.配置 Harbor


1)安装 Harbor


[root@Harbor-01 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.3.1/harbor-offline-installer-v2.3.1.tgz  
[root@Harbor-01 ~]# tar zxf harbor-offline-installer-v2.3.1.tgz


2)修改 Harbor 配置文件


[root@Harbor-01 ~]# cd harbor/
[root@Harbor-01 ~]# cp harbor.yml.tmpl harbor.yml
[root@Harbor-01 ~]# sed -i 's/reg.mydomain.com/192.168.1.2/' harbor.yml                 # 修改 Harbor 主机名
[root@Harbor-01 ~]# mkdir -p /app/harbor/data
[root@Harbor-01 ~]# sed -i '/data_volume/s/\/data/\/app\/harbor\/data/' harbor.yml      # 修改存储目录


3)启动 Harbor


[root@Harbor-01 ~]# ./install.sh


image.png


启动时出现:ERROR:root:Error: The protocol is https but attribute ssl_cert is not set 报错,这个报错是因为 Harbor 配置文件里的 HTTPS 相关配置 并没有进行修改或是关闭处理。


image.png


重新安装即可。


image.png


验证:http://192.168.1.2(默认的账号密码为:admin/Harbor12345)


image.png



4.Harbor 高可用配置


1)安装 Nginx 服务


[root@Nginx ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
[root@Nginx ~]# ls
anaconda-ks.cfg  nginx-1.21.0.tar.gz
[root@Nginx ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/
[root@Nginx ~]# cd /usr/src/nginx-1.21.0/
[root@Nginx nginx-1.21.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx nginx-1.21.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-stream \
--with-pcre && make && make install
[root@Nginx nginx-1.21.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/


2)修改 Nginx 配置文件


[root@Nginx ~]# cat <<END >> /usr/local/nginx/conf/nginx.conf
stream {
    upstream harbor {
        server 192.168.1.2:80;
        server 192.168.1.3:80 backup;                                   # 备用服务器
    }
    server {
        listen 5000;
        proxy_pass harbor;
        proxy_timeout 300s;
        proxy_connect_timeout 5s;
    }
}
END
[root@Nginx ~]# nginx -s reload
[root@Nginx ~]# echo "192.168.1.1 harbor.tianya.com" >> /etc/hosts


  • 上面配置 backup(备用)的原因,主要就是因为 Harbor 需要使用账号密码来进行验证。


也就是说,当我们登录到其中一台 Harbor 主机上,可能还会轮询到另一台 Harbor 主机上,但是这另一台 Harbor 主机并没有使用账号密码来进行验证。可能就会阶段性的出现 401 Unauthorized(认证失败)错误码。


image.png


3)Harbor 界面配置


1)创建一个新的项目:http://192.168.1.2


image.png


2)在仓库管理新建一个目标


image.png


3)在复制管理新建一个规则


image.png

image.png


  • 因为我们做的是基于双主的 Harbor 高可用,所以需要在备用的 Harbor 上也执行下上面的步骤。


5.验证


1)在 Docker 上配置 Harbor 仓库


[root@Harbor-01 ~]# cat <<END > /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://ipbtg5l0.mirror.aliyuncs.com"
    ],
    "insecure-registries": [
        "http://harbor.tianya.com:5000"
    ]
}
END
[root@Harbor-01 ~]# systemctl daemon-reload && systemctl restart docker
[root@Harbor-01 ~]# docker login http://harbor.tianya.com:5000
Username: admin
Password: Harbor12345


2)验证推送


[root@Harbor-01 ~]# docker pull nginx:1.18.0
[root@Harbor-01 ~]# docker tag nginx:1.18.0 harbor.tianya.com:5000/kubernetes/nginx:1.18.0
[root@Harbor-01 ~]# docker push harbor.tianya.com:5000/kubernetes/nginx:1.18.0


image.png


3)验证高可用


[root@Harbor-01 ~]# cd harbor/
[root@Harbor-01 ~]# docker-compose down                                             # 关闭 Harbor
[root@Harbor-02 ~]# docker pull harbor.tianya.com:5000/kubernetes/nginx:1.18.0


image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
28106 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15591 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20178 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14871 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22248 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23538 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36367 0
82
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载