Docker(三)

一、Docker私有仓库Harbor

1.1、概述

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,Harbor主要提供Dcoker Registry管理UI,提供的功能包括:基于角色访问的控制权限管理(RBAC)、AD/LDAP集成、日志审核、管理界面、自我注册、镜像复制和中文支持等。Harbor的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:

  1. 基于角色的访问控制(Role Based Access Control)

  2. 基于策略的镜像复制(Policy based image replication)

  3. 镜像的漏洞扫描(Vulnerability Scanning)

  4. AD/LDAP集成(LDAP/AD support)

  5. 镜像的删除和空间清理(Image deletion & garbage collection)

  6. 友好的管理UI(Graphical user portal)

  7. 审计日志(Audit logging)

  8. RESTful API

  9. 部署简单(Easy deployment)

Harbor的所有组件都在Docker中部署,所以Harbor可使用Docker Compose快速部署。需要特别注意:由于Harbor是基于Docker Registry V2版本,所以docker必须大于等于1.10.0版本,docker-compose必须要大于1.6.0版本!

1.2、Harbor仓库结构

Harbor的每个组件都是以Docker容器的形式构建的,可以使用Docker Compose来进行部署。如果环境中使用了kubernetes,Harbor也提供了kubernetes的配置文件。Harbor大概需要以下几个容器组成:

  • ui(Harbor的核心服务)

  • log(运行着rsyslog的容器,进行日志收集)

  • mysql(由官方mysql镜像构成的数据库容器)

  • Nginx(使用Nginx做反向代理)

  • registry(官方的Docker registry)

  • adminserver(Harbor的配置数据管理器)

  • jobservice(Harbor的任务管理服务)

  • redis(用于存储session)

1.3、Harbor依赖组件

Nginx(Proxy代理层):Nginx前端代理,主要用于分发前端页面ui访问和镜像上传和下载流量; Harbor的registry,UI,token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务

Registry v2:镜像仓库,负责存储镜像文件; Docker官方镜像仓库, 负责储存Docker镜像,并处理docker push/pull命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token进行解密验证

Database(MySQL或Postgresql):为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据

Core services(Admin Server):这是Harbor的核心功能,主要提供以下服务:

UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权

webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块

Auth服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求

API: 提供Harbor,RESTful API

Replication Job Service:提供多个 Harbor 实例之间的镜像同步功能

Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析

1.4、Harbor组件数据流向

proxy,它是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中通过深蓝色先标识;

ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;

registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成;

adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置,通过灰色线标识;

jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标识;

log是日志汇总组件,通过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识。

二、Harbor架构部署

安装方式:推荐离线安装,提前下载离线安装包 harbor-offline-installer-.tgz 到本地。

2.1、离线安装步骤

  1. 下载Harbor最新的在线安装包

  2. 配置Harbor (harbor.yml)

  3. 运行install.sh来安装和启动Harbor

  4. Harbor的日志路径:/var/log/harbor

2.2、离线部署流程

软件要求

软件名称 版本
Python 2.7+
Docker Engine 1.10+
Docker Compose 1.6.0+

系统环境要求

设置项目 结果
SELinux setenforce 0 ;关闭SELinux
firewalld 关闭并开机不自启;systemctl stop firewalld && systemctl disable firewalld
python python --version 确定软件版本
Docker docker -v 确定软件版本

验证compose

#下载compose

root@localhost \~# curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-\`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#更改命令权限

root@localhost \~# chmod +x /usr/local/bin/docker-compose

#查看版本

root@localhost \~# docker-compose version

安装Harbor

#导入harbor软件包

#解压

root@localhost \~# tar xf harbor-offline-installer-v2.7.3.tgz

#修改安装配置

root@localhost \~# cd harbor/

root@localhost harbor# cp harbor.yml.tmpl harbor.yml

root@localhost harbor# vim harbor.yml

#配置文件解析

  1. data-root: 指定Docker存储数据的根目录,这里设置为/opt/module/docker_data。

  2. log-driver: 指定Docker的日志驱动程序,这里设置为json-file,表示将日志以JSON格式存储。

  3. log-opts: 指定日志驱动程序的参数选项。

max-size: 指定日志文件的最大大小,这里设置为100m,表示最大为100MB。

  1. insecure-registries: 指定不安全的镜像仓库,在这里设置为192.168.115.129:80,表示允许与该镜像仓库通信,即使没有启用TLS。

root@www harbor# systemctl daemon-reload

root@www harbor# systemctl restart docker

#安装harbor

root@localhost harbor# ./install.sh

Harbor启停

#切换到harbor安装包目录

#停止Harbor

root@localhost harbor# docker-compose stop

#启动Harbor

root@localhost harbor# docker-compose start

Harbor访问

浏览器登录 : admin/Harbor12345 http://(主机ip)
命令行登录:root@localhost \~# docker login -u admin http://(主机ip):80

Harbor部署完毕。

相关推荐
码农小白AI4 小时前
AI报告审核加速融入自动化实验室:IACheck破解智能设备时代报告管理新挑战
运维·人工智能·自动化
utf8mb4安全女神4 小时前
克隆的虚拟机怎么更改ip地址
运维
赵民勇4 小时前
fuse-overlayfs命令详解
linux·容器
万能的知了5 小时前
服务器托管 vs 云主机 vs 裸金属:一个决策故事
运维·服务器·云计算
杨云龙UP6 小时前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
luweis6 小时前
企智孪生 ETA(3.3 认知算法层:ETA 的思维内核 3.4 基础架构:算力与弹性)【浙江联保网络 卢伟舜】
大数据·运维·线性代数·ai·矩阵·学习方法
极客老王说Agent6 小时前
屏幕理解能力是下一代自动化的关键吗?2026年自动化范式演进深度解析
运维·人工智能·ai·chatgpt·自动化
LT10157974447 小时前
2026年电商RPA选型指南:电商运营全流程自动化测评
运维·自动化·rpa
JAVA社区8 小时前
Java高级全套教程(十一)—— Kubernetes 超详细企业级实战详解
java·运维·微服务·容器·面试·kubernetes
lihao lihao9 小时前
linux匿名管道
linux·运维·服务器