docker提供了公共的镜像仓库,但是处于安全,效率上考虑,本地开发使用私有的Registry非常必要。 Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。 本文描述了harbor的安装流程,阅读完成本文将会了解基础harbor的安装与镜像推送到仓库的方法。特别说明的是本文的harbor不支持https。
安装依赖
硬件需求
资源 | 最小需求 | 推荐值 |
---|---|---|
CPU | 2 CPU | 4CPU |
Mem | 4GB | 8GB |
Disk | 40GB | 160GB |
软件需求
软件 | 版本 | 描述 |
---|---|---|
Docker engine | Version 17.06.0-ce+ or higher | 安装指令查看Docker文档 |
Docker compose | Version 1.18.0 or higher | 安装指令查看Docker Compose文档 |
Openssl | 最好用最新的 | 主要是用来支持HTTPS的 |
网络端口
端口 | 协议 | 描述 |
---|---|---|
443 | HTTPS | harbor核心API使用端口,用来接收https请求,可以在配置文件中更改 |
4443 | HTTPS | harbor内容认证服务端口,Notary开启时才会使用,可以在配置文件中改 |
80 | HTTP | harbor核心API使用端口,用来接收http请求,可以在配置文件中更改。服务器资源有限的情况都不会使用80端口做访问端口,最好时根据具体情况配置下 |
前置准备
开始该步骤之前请确保安装依赖已经完成配置
安装包下载
harbor有两种安装方式,一种时离线安装,一种是在线安装,本文只显示离线安装的方式。 harbor离线安装包下载地址:下载地址 请选择最新的release版本下载,本文使用的harbor版本是v2.2.0
安装包解压
安装包下载完成后将其解压到指定目录,例如本文的目录是/data/software/
tar xvf harbor-offline-installer-v2.2.0.tgz -C /data/software
配置文件生成
harbor的安装包中已经存在了一个配置文件模板 harbor.yml.tmpl
直接将该文件拷贝一份命名为 harbor.yml
基本内容不需要改,但是有几个点需要进行处理
- hostname设置为本机IP
- http的端口配置,本文为了避免与80端口出现冲突是配置到2000端口上
- 关闭https支持,直接注释
- 数据卷存放位置,建议和安装体放在一起,也方便管理
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 10.60.45.148
http related config
http:
port for http, default is 80. If https enabled, this port will redirect to https port
port: 2000
https related config
#https:
https port for harbor, default is 443
#port: 443
The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path
data_volume: /data/software/harbor/data
对harbor的文件配置完成后还需要对docker本身的配置文件进行修改,不然后续连接的时候会出现连接拒绝的情况. docker默认是不支持http推送的。
修改 /etc/docker/daemon.json
,添加"insecure-registries": ["hostname:port"]
,hostname是在harbor中配置的主机IP。实际的配置如下:
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"],
"insecure-registries": ["10.60.45.148:2000"]
}
安装流程
执行harbor安装目录下的prepare脚本会自动生成相关的docker-compose文件
./prepare
执行完成不报错的情况请再执行安装脚本
./install.sh
如果安装不报错的情况就会直接启动harbor
镜像推送
新建用户和项目
新建用户
直接访问(服务器ip:端口)登录harbor管理后台,例如本文中的harbor安装在10.60.45.148,端口为2000,直接在浏览器中输入10.60.45.148:2000直接访问后台
默认的管理员登录名是admin,登录密码需要查找harbor.yml中的harbor_admin_password
。
点击左侧菜单的用户管理,点击创建用户,例如创建一个名为dev的用户
创建项目
点击左侧菜单的项目,新建一个项目,例如本文将要推送的是一个redis镜像,所以可以建立一个redis的项目。创建完成后需要将dev用户添加到项目中,进入项目点击成员,添加dev用户到成员列表
镜像推送
镜像打包
假定本机已经存在了一个redis镜像,现在需要将该镜像推送到harbor。需要先对该镜像打tag。
打tag的格式为 docker tag 本地镜像名和版本 将要推送的仓库地址/项目名称/镜像名和版本
docker tag redis:latest 10.60.45.148:2000/redis/redis:1.0
镜像推送
使用命令docker push 完成推送到harbor,本文处理的镜像是10.60.45.148:2000/redis/redis:1.0
,期间需要输入用户名和密码,直接输入配置到仓库中dev用户信息即可完成正常的推送
docker push 10.60.45.148:2000/redis/redis:1.0
参考目录
- [1] harbor github
- [2] harbor 安装手册