容器镜像仓库Harbor安装部署及简单使用
admin
2023-04-08 16:03:36
0

容器镜像仓库Harbor安装部署及简单使用 容器镜像仓库Harbor安装部署及简单使用

 上面左边是我的个人微 信,如需进一步沟通,请加好 友。  右边是我的公众号“Openstack私有云”,如有兴趣,请关注。


    在实际生产中,容器镜像需要放在本地,本地需要建立一个容器镜像仓库存放相关的镜像,并且能够根据不同账号设置不同的镜像使用权限,另外,这个仓库最好还能通过web管理界面能够很好的进行管理,比如设置权限、删除镜像、管理镜像空间等等 。

    Habor是由VMWare公司开源的容器镜像仓库。官方地址:https://vmware.github.io/harbor/cn/

    

    Harbor主要功能 


    1. 基于角色访问控制(RBAC)

    在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。

例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。

在Harbor中,有三种角色:


容器镜像仓库Harbor安装部署及简单使用

    Guest:对指定项目只读权限

    Developer:开发人员,读写项目的权限

    Admin:项目管理,所有权限

    Anonymous:当用户未登录时,该用户视为匿名用户。匿名用户不能访问私有项目,只能访问公开项目 


    2. 镜像复制

    

    可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能。

    

    3. LDAP

    

    Harbor支持LDAP认证,可以很轻易接入已有的LDAP。

    

    4. 镜像删除和空间回收

    

    Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。

    

    5. 图形页面管理

    

    用户很方面搜索镜像及项目管理。

    

    6. 审计

    

    对仓库的所有操作都有记录。

    

    7. REST API

    

    完整的API,方便与外部集成


Harbor组件

组件功能
harbor-adminserver配置管理中心
harbor-dbMysql数据库
harbor-jobservice负责镜像复制
harbor-log记录操作日志
harbor-uiWeb管理页面和API
nginx前端代理,负责前端页面和镜像上传/下载转发
redis会话
registry镜像存储

    

Harbor部署


硬件、软件、端口要求如下,以下图片来自网络:

容器镜像仓库Harbor安装部署及简单使用

    我使用的是2核CPU、4G内存、40G的pve虚拟机一台,如下配置:

容器镜像仓库Harbor安装部署及简单使用


    

    Harbor安装有3种方式:

    在线安装:从Docker Hub下载Harbor相关镜像

    离线安装:安装包包含部署的相关镜像

    OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

    

    这里采用离线安装,首先下载离线安装包:https://github.com/vmware/harbor/releases

容器镜像仓库Harbor安装部署及简单使用

HTTP方式部署


基本配置:

# tar xzvf harbor-offline-installer-v1.7.1.tgz 
# cd harbor
# vi harbor.cfg
hostname = 192.168.1.44   # IP地址或者域名访问
ui_url_protocol = http
harbor_admin_password = 123456  # Web登录密码
准备配置文件:
# ./prepare
安装并启动Harbor:
./install.sh
会提示需要安装docker 和 docker-compose 
# yum install docker docker-client docker-common
其中docker-compose需要用到epel源:
# yum install epel-release -y
# yum install -y docker-compose
再次执行install.sh

安装完成后:

容器镜像仓库Harbor安装部署及简单使用


查看运行状态:

[root@localhost harbor]# docker-compose ps
       Name                     Command               State               Ports            
-------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/start.sh                 Up                                   
harbor-core          /harbor/start.sh                 Up                                   
harbor-db            /entrypoint.sh postgres          Up      5432/tcp                     
harbor-jobservice    /harbor/start.sh                 Up                                   
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp    
harbor-portal        nginx -g daemon off;             Up      80/tcp                       
nginx                nginx -g daemon off;             Up      0.0.0.0:443->443/tcp,        
                                                              0.0.0.0:4443->4443/tcp,      
                                                              0.0.0.0:80->80/tcp           
redis                docker-entrypoint.sh redis ...   Up      6379/tcp                     
registry             /entrypoint.sh /etc/regist ...   Up      5000/tcp                     
registryctl          /harbor/start.sh                 Up

登录web界面:

容器镜像仓库Harbor安装部署及简单使用


账号 admin,密码就是在harbor.cfg配置文件里面设置的123456 

容器镜像仓库Harbor安装部署及简单使用


    接下来就是简单使用,可以看到,harbor方便了管理,一般3类用户就够了,进行一个简单测试,新建一个开发用户,然将这个开发用户绑定到library项目,用这个用户登陆harbor推送和下载镜像。

    具体的建用户过程就不详细写了,新建一个用户ywb,登陆,

容器镜像仓库Harbor安装部署及简单使用

    系统会提示推送镜像需要运行的命令,还是很人性化的。

    在客户端执行:

    docker login 192.168.1.44

    会报错https://192.168.1.44   connection refuse ,是因为docker 默认使用的是https连接,我们上面使用的是http安装,需要修改 /etc/docker/daemon.json文件,加入如下内容:

    {"insecure-registries":["192.168.1.44:80"]}

    或者,在 /etc/sysconfig/docker 配置文件的 OPTIONS 选项中增加一个选项:

    --insecure-registry=192.168.1.44 

    之后对docker进行重启:

    systemctl restart docker


    测试过程:

    1、下载一个tomcat 镜像:   

    docker pull tomcat

    2、对这个镜像进行标记:

    docker tag docker.io/tomcat 192.168.1.44/library/tomcat

    3、登录harbor这个registry: 

    docker login 192.168.1.44

    输入上面创建的账号密码。

    4、上传这个镜像:

    docker push 192.168.1.44/library/tomcat

    

    最后使用个人账号登录web界面,可以看到镜像成功上传:

    容器镜像仓库Harbor安装部署及简单使用


总结:

    Harbor的安装使用都是很方便的,部署方式本身也是通过docker和容器编排docker-compose 实现 ,主要解决了局域网内的容器镜像管理问题。

    这里没有使用https的方式部署,使用的是http方式,其中需要注意客户端docker中需要配置对“非安全” http的支持,加入--inscure-registry  参数的支持。


    Harbor产品本身解决了本地局域网内部集中管理容器镜像的问题,如果是生产环境,可以考虑再加入同步复制的功能以确保数据的安全性,这里就不展开说,我也没用到,用到的时候再说。

    

    


    

    

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...