概述
Harbor 是 VMware 中国开发的一款 Docker Registry 工具,其主要致力于企业级的 Registry 管理,并提供了 LDAP 等高级权限认证功能。
KS3(Kingsoft Standard Storage Service)是金山云为企业用户提供的无限制、多备份、分布式的低成本存储空间服务,解决存储扩容、数据可靠安全以及分布式访问等相关复杂问题。
本文介绍了如何使用基于KS3存储搭建Harbor企业级的Registry镜像仓库管理。
准备
Docker Registry v2需要运行在有Docker环境的主机上,Harbor项目是以容器化的方式来启动的,各组件容器之间的依赖由docker-compose管理。
环境
- Linux系统 (本文以ubuntu示例)
- Docker运行环境
- docker-compose编排工具
安装Docker
执行以下命令安装 Docker
安装docker-compose
默认的官方文档 安装命令如下 :
部署
安装部署步骤如下:
- 下载安装包
- 配置harbor
- 配置后端存储到KS3
- 配置HTTPS
- 执行安装脚本并启动Harbor
- 测试
下载安装包
Harbor发行版的安装包可以在GItHub下载,有在线(online)安装和离线(offline)安装两种安装方式选择。
以在线安装示例,通过wget命令下载,使用tar命令将其解压,目录结构如下:
|
|
其中:
install.sh 是用于安装Harbor安装脚本
config 目录存放了harbor的配置数据,如registry 和 ui目录中存放了相关证书用于组件间加密通讯
harbor.cfg 是全局配置文件,主要包含了一些常用设置,比如是否启用https等
prepare 是一个python写的预处理脚本,主要用于初始化一些harbor.cfg的相关设置
docker-compose.yml 描述了个组件之间依赖关系以及配置挂载,数据持久化等设置。
配置Harbor
Harbor的常用配置参数主要存放在harbor.cfg,直接编辑harbor.cfg即可:
|
|
配置后端存储到KS3
在默认情况下,Harbor的镜像存储在本地磁盘/data/registry目录下。但是在生产环境中,出于高可用、高吞吐、安全可靠等因素,我们可能需要将镜像数据存储在KS3、Ceph等。
金山云提供了基于Docker registry v2封装了KS3驱动的官方镜像ksyun/registry:2。该镜像提供了Docker registry v2和KS3的完美对接,通过该镜像,用户可以很方便将镜像仓库数据存储到KS3上。
使用KS3作为Harbor镜像仓库的后端存储,你需要两步配置:
首先,修改harbor/docker-compose文件,修改registry模块,以支持KS3驱动的官方镜像。
|
|
其次,配置template/registry/config.yml文件,修改storage模块,为KS3的配置数据。
|
|
更多KS3存储配置,参见Docker Registry KS3存储驱动配置。
HTTPS配置
创建CA证书
|
|
证书签名
|
|
初始化CA信息
|
|
配置Nginx
复制证书
1234567# 复制证书cp registry.mritd.me.crt config/nginx/certcp ca/registry.mritd.me.key config/nginx/cert# 备份配置mv config/nginx/nginx.conf config/nginx/nginx.conf.bak# 使用模板文件mv config/nginx/nginx.https.conf config/nginx/nginx.conf修改nginx.conf配置
12345678server {listen 443 ssl;server_name harbordomain.com;...server {listen 80;server_name harbordomain.com;rewrite ^/(.*) https://$server_name:443/$1 permanent;
执行安装脚本并启动Harbor
配置完成后,执行Harbor提供的安装脚本(install.sh),来生成私有配置,在线安装版本会到Docker Hub拉取镜像,并启动Harbor服务。
测试
访问Harbor UI
在浏览器中打开http://reg.yourdomain.com/ ,以admin账号(初始账号/密码:admin/Harbor12345)登录,可以查看Harbor的控制面板。
测试docker client 登录、推拉镜像
在控制面板(Harbor UI)中创建一个项目myproject,docker client登录认证,并测试推送私有镜像:
|
|
管理Harbor的生命周期
你可以通过docker-compose工具来管理Harbor的生命周期,常用命令如下:
关于docker-compose详见Docker Compose文档 。
More
KS3更多信息,参见 http://www.ksyun.com/proservice/storage_service
Harbor更多信息,参见 http://vmware.github.io/harbor/
Registry更多信息,参见 https://docker.github.io/registry/
Docker更多信息,参见 https://docs.docker.com