Harbor 介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
环境、软件准备
Linux CentOS 7.4
Docker(version:18.06.0-ce)
Docker-compose(version:1.9.0)
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.sh
,Harbor
服务就会根据当期目录下的docker-compose.yml
开始下载依赖的镜像,检测并按照顺序依次启动各个服务。
注:可能下载下来的文件中,install.sh没有执行的权限,所有需要更改权限
# 添加执行权限(需要sudo)chmod 755 install.sh# 同时需要修改下面这个文件的权限,否则执行会报错chmod 755 prepare
执行过程
登录界面:
首页: