Harbor 介绍

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

环境、软件准备

  1. Linux CentOS 7.4

  2. Docker(version:18.06.0-ce)

  3. Docker-compose(version:1.9.0)

  4. Harbor (version:1.5.2)

docker 安装

之前的文章已介绍安装步骤,请自行查看。

Harbor 服务搭建

下载Harbor安装文件

登录网址查看harbor版本,选择需要的本版进行下载,这里选择目前最新版本V1.5.2

点击图标下载到本地后用rz命令上传至服务器或

wget      ;国内下载较慢耐心等待

tar zxvf   harbor-offline-installer-v1.5.2.tgz

配置Harbor

解压缩之后,目录下会生成harbor.cfg文件,该文件就是Harbor的配置文件

 1. hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost

# 2. 默认情况下,harbor使用的端口是80,若使用自定义的端口,除了要改docker-compose.yml文件中的配置外,

# 这里的hostname也要加上自定义的端口,都在在docker login、push时会报错

hostname = 10.0.11.150:5000

# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on

ui_url_protocol = http

# mysql数据库root用户默认密码root123,实际使用时修改下

db_password = root123

#Maximum number of job workers in job service  

max_job_workers = 3 

#The path of secretkey storage

secretkey_path = /data

# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345

# 若修改了此处的admin登录密码。则登录后台时使用修改后的密码

harbor_admin_password = Harbor12345

# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证

auth_mode = db_auth

# 是否开启自注册

self_registration = on

# Token有效时间,默认30分钟

token_expiration = 30

# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)

project_creation_restriction = everyone

 以上为比较常用的一些参数配置,详细的配置项可以在harbor.conf文件中查看,并且都有解释

更改端口号

proxy:    image: vmware/nginx:1.11.5-patched    container_name: nginx    restart: always    volumes:      - ./common/config/nginx:/etc/nginx:z    networks:      - harbor    ports:      - 80:80  # 修改端口号则修改此处,前面的位宿主机的端口,后面的是容器中的端口,只修改前面的即可      - 443:443      - 4443:4443    depends_on:      - mysql      - registry      - ui      - log    logging:      driver: "syslog"      options:          syslog-address: "tcp://127.0.0.1:1514"        tag: "proxy"

这里默认80端口

如上面配置中的注释所说,原来的端口映射为:80:80,可以修改为5000:80,根据需要修改即可。最重要的是,此处修改完之后,一定要将harbor.conf配置文件中的hostname一块修改下,改成:ip:port。ip就是部署harbor的机器IP,port就是这里设置的端口号。

更改挂载私有库镜像目录

一般情况下,我们都会将容器启动的私有仓库服务中的镜像保存目录挂载到宿主机上的某个目录,这样能够保存镜像文件,使仓库镜像不易流失。在harbor中也有配置会指定目录挂载的映射关系。

打开 docker-compose.yml(此处只摘录需要修改挂载目录的部分配置):

registry:    image: vmware/registry-photon:v2.6.2-v1.5.2    container_name: registry    restart: always    volumes:      - /data/docker/registry:/storage:z  # 看这里,挂载目录就是修改这行配置      - ./common/config/registry/:/etc/registry/:z    networks:      - harbor    environment:      - GODEBUG=netdns=cgo    command:      ["serve", "/etc/registry/config.yml"]    depends_on:      - log    logging:      driver: "syslog"      options:          syslog-address: "tcp://127.0.0.1:1514"        tag: "registry"

从上面的配置及注释知道需要修改那块配置了。/data/docker/registry:/storage:z,这里默认的挂载目录是/data/registry,我修改成了/data/docker/registry,即只需要修改前半部分即可,可根据自己需要修改,其他地方不需要改动。

启动 Harbor

修改完配置文件后,在当前目录执行./install.shHarbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各个服务。

注:可能下载下来的文件中,install.sh没有执行的权限,所有需要更改权限

# 添加执行权限(需要sudo)chmod 755 install.sh# 同时需要修改下面这个文件的权限,否则执行会报错chmod 755 prepare

执行过程

image.png

登录界面:

image.png

首页:

image.png