• Docker Harbor概述及构建


    目录​​​​​​​

    一、Docker Harbor概述

    1.1  Harbor的优势

    1.2  Harbor的核心组件

    ①Proxy

    ②Registry

    ③Core services

    ④Database

    ⑤Log collector

    二、Docker Harbor 私有仓库架构拓扑

    三、Harbor构建Docker私有仓库

    3.1  环境配置

    3.2  案例需求

    3.3  部署Harbor服务

    3.4  此时可真机访问serverIP

    3.5  添加项目并填写项目名称 

    3.6  通过127.0.0.1来登陆和推送镜像 

    3.7  维护管理Harbor 

    3.8  创建Harbor用户 

    3.9  移除 Harbor 服务容器同时保留镜像数据/数据库 

    一、Docker Harbor概述

    有可视化的Web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能

    Harbor是VMware公司开源的企业级Docker Registry项目

    1.1  Harbor的优势

    • 基于角色控制:有管理员与普通用户,可赋权普通用户,比如只能上传和下载,可根据项目来进行操作和管理
    • 基于镜像的复制策略:也与权限相关,比如有只一些用户与组才能对此项目进行相对应的操作
    • 支持 LDAP/AD:域控制,比如南京去下载北京 harbor 私有仓库的镜像,两端打上局域网的地址,连接在一块,数据信息的传输通过一条隧道,会通过两层加密,第一层为隧道加密,第二层为数据加密,安全可靠
    • 图像删除和垃圾收集:即回收站机制
    • 图形 UI:具有统计功能,比如访问量与镜像下载热度
    • 审计:日志,这里意义不大,主要还是借助于 ELK
    • RESTful API:定义 Web 语言规范的格式,方便调用 Harbor 的接口,也便于二次开发

    1.2  Harbor的核心组件

    ①Proxy

    • 通过一个前置的反向代理统一接收浏览器、Docker 客户端的请
      求,并将请求转发给后端不同的服务
    • 这是一个反向代理组件

    ②Registry

    • 负责储存 Docker 镜像
    • 处理 docker push/pull 命令来上传和下载

    ③Core services

    • Harbor 的核心功能,包括UI、webhook、 token 服务
    • webhook:网站的一些服务功能
    • token:令牌,提供身份验证服务

    ④Database

    • 为 core services 提供数据库服务
    • 数据库记录镜像的元信息及用户的身份信息

    ⑤Log collector

    • 负责收集其他组件的日志,以供然后进行分析
    • 健康检查等

    二、Docker Harbor 私有仓库架构拓扑

    mark

    1. 所有的请求或认为的操作都会首先交给proxy(反向代理)
    2. proxy会先将请求转发给后端Core services,Core services 中包含 UI、token(身份验证服务)、webhook(网站的一些服务功能)
    3. 转发给registry(镜像存储),若需要下载镜像等权限操作,需要通过Core services中的token令牌的身份验证服务才行
    4. 每一次下载和上传都产生操作记录,生成日志,保存至database中
    5. database记录保存镜像的元信息及用户与组的身份信息,通过验证授权才能允许相关操作

    三、Harbor构建Docker私有仓库

    3.1  环境配置

    主机操作系统IP地址软件
    serverCentOS7.6192.168.223.30docker、docker-compose、harbor-offline-v1.1.2
    clientCentOS7.6192.168.223.20docker

    3.2  案例需求

    通过Harbor创建Docker私有仓库
    图形化管理Docker私有仓库镜像

    3.3  部署Harbor服务

    Harbor 被部署为多个 Docker 容器,因此可以部署在任何支持 Docker 的 Linux 发行版 上。
    服务端主机需要安装 Python、Docker 和 Docker Compose。

    安装包:harbor-offline-installer-v1.2.2.tgz
    提取码:k7o8

    compose链接:docker-compose
    提取码:y7c6

    1. cd /usr/local
    2. rz docker-compose
    3. chmod +x docker-compose
    4. mv docker-compose /usr/bin

    在这里插入图片描述

    1. rz harbor-offline-installer-v1.2.2.tgz
    2. tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
    3. ==配置Harbor参数文件==
    4. vim /usr/local/harbor/harbor.cfg
    5. ==第5行修改==
    6. hostname = 192.168.223.30

    sh /usr/local/harbor/install.sh
    

    1. docker ps
    2. docker images

    docker-compose ps
    

    3.4  此时可真机访问serverIP

    1. 192.168.223.30
    2. 用户名:admin
    3. 密码:Harbor12345

     

    3.5  添加项目并填写项目名称 

    3.6  通过127.0.0.1来登陆和推送镜像 

    此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,
    Register 服务器在端口 80 上侦听

    1. #登陆
    2. docker login -u admin -p Harbor12345 http://127.0.0.1
    3. #下载镜像进行测试
    4. docker pull tomcat
    5. #镜像打标签
    6. docker tag tomcat 127.0.0.1/myproject-lichen/tomcat:v1
    7. #上传镜像到Harbor
    8. docker push 127.0.0.1/myproject-lichen/tomcat:v1

     查看图形化界面

    以上操作都是在 Harbor 服务器本地操作。如果其他客户端上传镜像到 Harbor,就会报
    如下错误。出现这问题的原因 Docker Registry 交互默认使用的是 HTTPS,但是搭建私有镜
    像默认使用的是 HTTP 服务,所以与私有镜像交互时出现以下错误。

    解决方法: 

    1. vim /usr/lib/systemd/system/docker.service
    2. 添加 --insecure-registry serverIP

    1. systemctl daemon-reload
    2. systemctl restart docker

    报错因为consul的地址指向,进行如下操作 

    1. docker pull nginx
    2. docker tag nginx:latest 192.168.223.30/myproject-lichen/nginx:v1
    3. docker push 192.168.223.30/myproject-lichen/nginx:v1

    图形界面查看 

    3.7  维护管理Harbor 

    可以使用 docker-compose 来管理 Harbor。一些有用的命令如下所示,必须在与
    docker-compose.yml 相同的目录中运行。

    修改 Harbor.cfg 配置文件
    要更改 Harbour 的配置文件时,请先停止现有的 Harbour 实例并更新 Harbor.cfg;然
    后运行 prepare 脚本来填充配置;最后重新创建并启动 Harbour 的实例。

    1. #卸载
    2. docker-compose down -v
    3. #编辑配置文件
    4. vim harbor.cfg
    5. #填充配置
    6. ./prepare
    7. #启动Harbor
    8. docker-compose up -d
    9. #如果报错
    10. 解决思路
    11. 关闭防火墙、重启docker
    12. systemctl stop firewalld
    13. setenfore 0
    14. systemctl restart docker

    3.8  创建Harbor用户 

    client操作 

    1. docker logout 192.168.223.30
    2. docker login 192.168.223.30
    3. zhangbin
    4. Harbor12345
    5. docker images
    6. docker rmi 192.168.223.30/myproject-lichen/nginx:v1
    7. docker pull 192.168.223.30/myproject-lichen/nginx:v1

     图形化界面访问

    3.9  移除 Harbor 服务容器同时保留镜像数据/数据库 

    在server上进行操作

    1. docker-compose down -v
    2. #如果需要重新部署,需要移除Harbor服务容器全部数据
    3. #持久数据,如镜像,数据库等在宿主机的/data目录下,日志在宿主机的/var/log/Harbor目录下
    4. rm -rf /data/database
    5. rm -rf /data/registry
  • 相关阅读:
    政务数据质量管理提升的5个最佳实践
    金融业信贷风控算法8-支持向量机
    信奥基本功:打字练习(盲打)
    分享股票下单API接口的方式和API攻略
    matlab 13折线法数据量化编码与解码
    二叉树知识点
    java-php-python-ssm-预约健身私教网站-计算机毕业设计
    webmin远程命令执行漏洞
    FFplay文档解读-39-视频过滤器十四
    图解网络(三)——TCP篇01
  • 原文地址:https://blog.csdn.net/weixin_67470255/article/details/125912561