一、harbor介绍
Harbor gitlab项目地址:https://github.com/goharbor/harbor
• Harbor是一个开源的可信云本机注册表项目,用于存储,签名和扫描内容。Harbor通过添加用户通常需要的功能(如安全性,身份和管理)来扩展开源Docker Distribution。使注册表更接近构建和运行环境可以提高图像传输效率。Harbor支持在注册表之间复制映像,还提供高级安全功能,如用户管理,访问控制和活动审计。
• Harbour由Cloud Native Computing Foundation(CNCF)托管。如果您是一个希望帮助塑造云原生技术发展的组织,请考虑加入CNCF。有关谁参与以及Harbour如何扮演角色的详细信息,请阅读CNCF 公告。
二、Harbor 特征
• 云本机注册表:Harbour 支持容器映像和Helm图表,可用作云本机环境(如容器运行时和业务流程平台)的注册表。
• 基于角色的访问控制:用户和存储库通过“项目”进行组织,用户可以对项目下的图像拥有不同的权限。
• 基于策略的映像复制:可以基于具有多个过滤器(存储库,标记和标签)的策略在多个注册表实例之间复制(同步)映像。如果遇到任何错误,Harbor将自动重试进行复制。非常适合负载平衡,高可用性,多数据中心,混合和多云场景。
• 漏洞扫描:Harbor定期扫描图像并警告用户漏洞。
• LDAP / AD支持:Harbor与现有企业LDAP / AD集成以进行用户身份验证和管理,并支持将LDAP组导入Harbor并为其分配适当的项目角色。
• 图像删除和垃圾收集:可以删除图像,并可以回收它们的空间。
• 公证:可以确保图像的真实性。
• 图形用户门户:用户可以轻松浏览,搜索存储库和管理项目。
• 审计:跟踪存储库的所有操作。
• RESTful API:适用于大多数管理操作的RESTful API,易于与外部系统集成。
• 易于部署:提供在线和离线安装程序。
三、Harbor的安装
实验环境:
harbor仓库: inode2:192.168.32.102 最低4G内存 客户端 : inode3:192.168.32.103
在inode2上部署harbor
第一步:安装docker和docker-compose
yum install -y docker-ce yum install -y docker-compose
第二步:下载harbor-offline-installer-v1.8.6.tgz
wget https://gitlab.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.6.tgz
第三步:上传到/server/tools,并解压
mkdir -p /server/tools mv harbor-offline-installer-v1.8.6.tgz /server/tools tar -xf harbor-offline-installer-v1.8.6.tgz
第四步:修改harbor.yml/harbor.cfg配置文件
cd harbor hostname = 192.168.32.102 harbor_admin_password = 123456 http: port: 180 data_volume: /data/harbor #数据目录 location: /data/harbor/logs #日志目录
第五步:执行install.sh
./install.sh
第六步:检查docker-compose ps全up就安装完成
[root@inode2 harbor]# docker-compose ps Name Command State Ports 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:80->80/tcp redis docker-entrypoint.sh redis ... Up 6379/tcp registry /entrypoint.sh /etc/regist ... Up 5000/tcp registryctl /harbor/start.sh Up
第七步:访问验证:
Harbor默认用户名密码为:admin/12345 生产环境必须修改
四、harbor的使用
在harbor的页面上配置相关信息
1、用户管理---创建用户
user:ywx passwd:YWXywx123
2、项目---新建项目
项目名称:kingseal 不公开
在客户端inode3配置/etc/docker/daemon.json,修改harbor的仓库信息
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://gah3bzo6.mirror.aliyuncs.com"], "insecure-registries": ["192.168.32.102:80"] } [root@inode3 ~]# systemctl daemon-reload [root@inode3 ~]# systemctl restart docker
上传镜像
1、给镜像文件打标签
[root@inode3 ~]# docker tag nginx:latest 192.168.32.102:80/kingseal/nginx:latest [root@inode3 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.32.102:80/kingseal/nginx latest a1523e859360 10 days ago 127MB nginx latest a1523e859360 10 days ago 127MB
2、登录harbor仓库
[root@inode3 ~]# docker login 192.168.32.102:80 Username: ywx Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
3、上传镜像
[root@inode3 ~]#dockers push 192.168.32.102:80/kingseal/nginx:latest [root@inode3 ~]# docker push 192.168.32.102:80/kingseal/nginx:latest The push refers to repository [192.168.32.102:80/kingseal/nginx] 318be7aea8fc: Pushed fe08d5d042ab: Pushed f2cb0ecef392: Pushed latest: digest: sha256:4a50ed86d8c86e35f530d4a168173677a192177eed14146fbb5728b1b3a2d4de size: 948 #不加tag,就把192.168.32.102:80/kingseal/nginx所有标签全部上传
在harbor页面查看上传的镜像信息
4、下载镜像
[root@inode3 ~]# docker login 192.168.32.102:80 [root@inode3 ~]# docker pull 192.168.32.102:80/kingseal/nginx:lates