Docker镜像仓库harbor的部署和使用

部署企业私有仓库往往是很有必要的, 他可以帮助你管理企业的一些敏感镜像
同时由于Docker Hub的下载速度和GFW(防火墙)的原因, 往往需要将一些无法直接下载的镜像导入本地私有仓库
而Harbor就是部署企业私有仓库的一个不二之选

1.什么是harbor?

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。
harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。

docker的registry用本地存储或者s3都可以的,harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。

Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。
它以Docker公司开源的registry为基础,额外提供了如下功能:

基于角色的访问控制(Role Based Access Control)
基于策略的镜像复制(Policy based image replication)
镜像的漏洞扫描(Vulnerability Scanning)
AD/LDAP集成(LDAP/AD support)
镜像的删除和空间清理(Image deletion & garbage collection)
友好的管理UI(Graphical user portal)
审计日志(Audit logging)
RESTful API
部署简单(Easy deployment)

2.Harbor的架构
在这里插入图片描述
Harbor依赖的外部组件
Nginx(Proxy): Harbor的registry,UI,token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
Registry v2: Docker官方镜像仓库, 负责储存Docker镜像,并处理docker push/pull命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token进行解密验证。
Database(MySQL):为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。

Harbor自己的组件
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,供日后进行分析。

3.主要组件的汇总
Proxy 对应启动组件nginx。它是一个nginx反向代理,代理Notary client(镜像认证)、Docker client(镜像上传下载等)和浏览器的访问请求(Core Service)给后端的各服务
UI(Core Service)对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能: UI:一个web管理页面ui;API:Harbor暴露的API服务;Auth:用户认证服务,decode后的token中的用户信息在这里进行认证;auth后端可以接db、ldap、uaa三种认证实现;
Token服务(上图中未体现) 负责根据用户在每个project中的role来为每一个docker push/pull命令issuing一个token,如果从docker client发送给registry的请求没有带token,registry会重定向请求到token服务创建token
Registry 对应启动组件registry。负责存储镜像文件,和处理镜像的pull/push命令。Harbor对镜像进行强制的访问控制,Registry会将客户端的每个pull、push请求转发到token服务来获取有效的token
Admin Service 对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置
Job Sevice 对应启动组件harbor-jobservice。负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log
Log Collector 对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总到一起
Volnerability Scanning 对应启动组件clair。负责镜像扫描
Notary 对应启动组件notary。负责镜像认证
DB 对应启动组件harbor-db,负责存储project、 user、 role、replication、image_scan、access等的metadata数据

4.安装过程
(1) 首先要有docker服务,并且启动服务,开机自启

(2)加密,生成证书
mkdir /etc/docker/certs
cd /etc/docker
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -x509 -days 365 -out certs/westos.org.crt
在这里插入图片描述
在这里插入图片描述
(3)导入仓库的镜像
docker load -i registry.tar
在这里插入图片描述
在这里插入图片描述
(4)生成用户的认证文件
mkdir /etc/docker/auth
cd /etc/docker
docker run --rm --entrypoint htpasswd registry:2.3.1 -Bbn yty westos > auth/htpasswd
docker run --rm --entrypoint htpasswd registry:2.3.1 -Bbn admin westos >> auth/htpasswd
在这里插入图片描述
在这里插入图片描述
(5)运行容器
[root@server1 ~]#
docker run -d \

–restart=always
–name registry
-v “s(pwd)”/certs:/certs
-e REGISTRY_HTTP_ADDR=0.0.0.0:443
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt
-e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key
-p 443:443
-v “$(pwd)”/auth:/auth
-e “REGISTRY_AUTH=htpasswd”
-e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm”
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
registry:2.3.1
25f91438a6730ac118819384006da1f1d43600ad74e18211e233c4a509970f24
把物理机的证书和认证的文件挂接到容器内 --name 不加会有随机名称
本地的路径 挂接到容器内 后面的证书 密码 都是容器内的 没有会自动生成
先加密 后认证 也可以加密认证一起做

在这里插入图片描述

(6)主机作解析
在这里插入图片描述
(7)拷贝证书到docker的配置目录下
[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# mkdir certs.d
[root@server1 docker]# cd certs.d
[root@server1 certs]# mkdir westos.org
[root@server1 certs]# cd westos.org/
[root@server1 westos.org]# cp /etc/docker/certs/westos.org.crt ca.crt
[root@server1 westos.org]# ls
ca.crt
在这里插入图片描述
在这里插入图片描述
(8)登陆并上传镜像到仓库当中
在这里插入图片描述
在这里插入图片描述
Harbor的运行必须有docker-compose所以需要部署docker-compose
docker-compose的部署
下载,授予执行权限
[root@server1 ~]# ls
docker-compose-Linux-x86_64-1.24.1
[root@server1 ~]# mv docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/
[root@server1 ~]# mv /usr/local/bin/docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/docker-compose
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose
[root@server1 ~]# docker-compose -v
docker-compose version 1.24.1, build 4667896b
在这里插入图片描述
Harbor的搭建
[root@server1 ~]# tar zxf harbor-offline-installer-v1.8.2.tgz
[root@server1 ~]# ls
harbor harbor-offline-installer-v1.8.2.tgz registry.tar
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
harbor.v1.8.2.tar.gz harbor.yml install.sh LICENSE prepare
在这里插入图片描述
(2)修改配置文件
在这里插入图片描述
(3)执行./install.sh,开始安装并启动 要将之前启动的registry容器停止删除,不然会报错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)在真机做好解析,浏览器中访问https://westos.org
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
登陆之后可以查看仓库里面的镜像,可以上传和删除镜像
也可以创建用户

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看harbor信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值