企业级Docker仓库-Harbor

作为一个深居墙内,或者是公司服务器无法连接网的测试,在引入新的工具或者平台的时候总会有这样的问题:即使使用 Docker 来安装部署,也会出现下载极慢,或者因为各种网络原因超时,甚至无法直接下载导致的安装错误或者无能无力。

那么在公司局域网内,部署一个企业级的 Docker 私库是非常有必要的,今天这篇文章就给大家介绍使用Harbor 搭建 Docker Registry服务器。

Harbor介绍

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由VMware中国研发的团队负责开发。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。

作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。

Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor组建

Harbor 由如下图所示几大组件构成:

企业级Docker仓库-Harbor

Proxy:Harbor的registry, UI, token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。

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

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

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

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

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

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

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

Job Services:提供镜像远程复制功能,可以把本地镜像同步到其他Harbor实例中。

Harbor的每个组件都是以Docker容器的形式构建的,官方也是使用Docker Compose来对它进行部署。

用于部署Harbor的Docker Compose模板位于 harbor/docker-compose.yml,打开这个模板文件,发现Harbor是由多个容器组成的:

Harbor安装

安装Harbor需要先安装docker和docker-compose。

关于Docker的安装这里复述,docker-compose 的安装官方提供了多种方式,最简单的做法就是使用 Python 的包管理器 pip 进行安装。

pip3 install docker-compose

Harbor 的安装推荐下载 offiline 安装包后安装。

下载地址:https://github.com/goharbor/harbor/releases

下载解压完成后可得到如下安装包:

重命名harbor.yml.tmpl 为 harbor.yml 文件后,修改配置 hostname、port、ssl认证等配置项;

启动安装脚本即可自动完成部署工作。

访问:http://ip:port 即可访问。

默认用户名与密码为:admin / Harbor12345

Harbor使用

创建项目(如不创建,会导致上传失败):

登录 :

docker login 10.0.0.19:88

为镜像打标签

docker tag ubuntu 10.0.0.19:88/mango/ubuntu:latest

上传镜像:

docker push 10.0.0.19:88/mango/ubuntu:latest

稍候即可在管理页面看到上传的镜像:

后记

关于 Docker 的使用,镜像的构建知识点非常多,如有需要可以关注我们的《运维从零开始课程》哟~

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/186773.html

(0)
联系我们
联系我们
分享本页
返回顶部