第一次使用docker镜像库:harbor

前言

1. 什么是harbor

Harbor正是一个用于存储Docker镜像的企业级Registry服务。是一个开源的可信云本机注册表项目,用于存储,签名和扫描内容。

2. harbor特征

  • 云本机注册表:Harbour 支持容器映像和Helm图表,可作为容器运行时和业务流程平台等云本机环境的注册表。
  • 基于角色的访问控制:用户和存储库通过“项目”进行组织,用户可以对项目下的图像或Helm图表拥有不同的权限。
  • 基于策略的复制:可以基于具有多个过滤器(存储库,标记和标签)的策略在多个注册表实例之间复制(同步)图像和图表。如果遇到任何错误,Harbor会自动重试复制。非常适合负载平衡,高可用性,多数据中心,混合和多云场景。
  • 漏洞扫描:Harbor定期扫描图像并警告用户漏洞。
  • LDAP / AD支持:Harbor与现有企业LDAP / AD集成以进行用户身份验证和管理,并支持将LDAP组导入Harbor并为其分配适当的项目角色。
  • OIDC支持:Harbour利用OpenID Connect(OIDC)来验证由外部授权服务器或身份提供商进行身份验证的用户的身份。可以启用单点登录以登录Harbor门户。
  • 图像删除和垃圾收集:可以删除图像,并可以回收它们的空间。
  • 公证人:可以确保图像的真实性。
  • 图形用户门户:用户可以轻松浏览,搜索存储库和管理项目。
  • 审计:跟踪存储库的所有操作。
  • RESTful API:适用于大多数管理操作的RESTful API,易于与外部系统集成。嵌入式Swagger UI可用于探索和测试API。
  • 轻松部署:提供在线和离线安装程序。此外,Helm Chart可用于在Kubernetes上部署Harbor。

一、环境搭建

1、安装docker和docker-compose,之前一直在使用,安装比较简单。

2、从github下载最新版本harbor,https://github.com/goharbor/harbor/releases/

tar xf harbor-offline-installer-v2.0.2.tgz

解压后有一个harbor.yml.tpl文件,cp harbor.yml.tpl harbor.yml

生成harbor的配置文件,里面对于我自己测试就修改三点需求:

hostname: 自己可以访问到的ip     ps:当然你可以把http的端口修改下,这样子可以自定义端口访问了

注释掉https标签,因为暂时没有ssl证书,先不开启

修改admin的登录密码,只能自己为所欲为

ps:另外data存放路径建议先别改了,自动运行脚本,会读取root.crt文件,默认目录下有。

3、部署harbor,先运行./prepare,然后运行../install.sh

第一次使用docker镜像库:harbor_第1张图片

停止与启动Harbor

如果修改了Harbor的配置文件harbor.yml,因为Harbor是基于docker-compose服务编排的,我们可以使用docker-compose命令重启Harbor。

未修改配置文件,重启Harbor命令:docker-compose start | stop | restart

当然个人建议:如果修改了harbor.yml文件,那么停止使用docker-compose down,启动使用 ./install.sh 。

Harbor启停:

方式一:

关闭harbor服务:docker-compose down -v

修改配置文件:vim harbor.yml

重新生成配置文件:./prepare或者或者bash prepare

启动Harbor服务:docker-compose up -d

方式二:

修改配置文件:vim harbor.yml

重新生成配置文件:./prepare或者或者bash prepare

重启harbor:docker-compose down -v && docker-compose up -d 注意:如果更改了harbor.yml文件,必须要重新执行install脚本,或者执行./prepare脚本,生成新的配置文件;

访问

访问修改的ip和端口,http://ip:port/  就会出来首页登录页面,用admin登录后可以创建自己的其他账号

可以按照自己的分类建立项目

这个总结图不错:

第一次使用docker镜像库:harbor_第2张图片

二、客户端docker需要pull或者push

首先因为我配置的是http,因为docker默认是用https交互的,所以需要进行修改

修改/etc/docker/daemon.json文件,添加下面一行:

"insecure-registries":["ip:port"],

systemctl daemon-reload

systemctl restart docker

推送镜像

1、先登录harbor

 docker login ip:prot -u xxx -p xxx

2、会提示登录成功,然后进行tag

docker tag image_id(本地需要push的镜像) ip:port/项目名/保存的镜像名(例如:xxx:version1)

3、推送

docker push ip:port/项目名/保存的镜像名(例如:xxx:version1)

这样就可以在harbor上看到对应项目下会多出一个xxx:version1镜像了

拉取镜像

docker pull ip:port/项目名/保存的镜像名(例如:xxx:version1)

有疑问可以联系一起沟通。

 

你可能感兴趣的:(docker,docker,harbor)