docker提供了公共的镜像仓库,但是处于安全,效率上考虑,本地开发使用私有的Registry非常必要。 Harbor是由VMware公司开源的企业级的Docker Registry管理项目,相比docker官方拥有更丰富的权限权利和完善的架构设计,适用大规模docker集群部署提供仓库服务。 本文描述了harbor的安装流程,阅读完成本文将会了解基础harbor的安装与镜像推送到仓库的方法。特别说明的是本文的harbor不支持https。

安装依赖

硬件需求

资源最小需求推荐值
CPU2 CPU4CPU
Mem4GB8GB
Disk40GB160GB

软件需求

软件版本描述
Docker engineVersion 17.06.0-ce+ or higher安装指令查看Docker文档
Docker composeVersion 1.18.0 or higher安装指令查看Docker Compose文档
Openssl最好用最新的主要是用来支持HTTPS的

网络端口

端口协议描述
443HTTPSharbor核心API使用端口,用来接收https请求,可以在配置文件中更改
4443HTTPSharbor内容认证服务端口,Notary开启时才会使用,可以在配置文件中改
80HTTPharbor核心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 基本内容不需要改,但是有几个点需要进行处理

  1. hostname设置为本机IP
  2. http的端口配置,本文为了避免与80端口出现冲突是配置到2000端口上
  3. 关闭https支持,直接注释
  4. 数据卷存放位置,建议和安装体放在一起,也方便管理
# 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

参考目录