1. 什么是Harbor
Harbor是由VMWare公司开源的容器镜像仓库
事实上,Harbor就是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用
我们都知道Docker Registry是命令行操作的,对于运维非常不友好,所以Harbor所做的扩展基本就包括了以下几个方面:
- 管理用户界面
- 基于角色的访问控制
- AD/LDAP集成以及审计日志
Harbor的相关组件如下:
组件 | 功能 |
harbor-adminserver | 配置管理中心 |
harbor-db | mysql数据库 |
harbor-jobservice | 镜像复制 |
harbor-log | 记录操作日志 |
harbor-ui | web页面和api |
nginx | 前端代理,负责前端页面和镜像上传、下载 |
redis | 会话 |
registry | 镜像存储 |
2. 搭建一个harbor仓库
在搭建一个仓库之前,首先需要docker和docker-compose环境
docker-compose就是一个单机的容器编排工具,可以快速将多个容器部署到一个网络内,并且可以确定容器创建的顺序
docker之前已经安装过了,这里只写一下安装docker-compose,docker-compose就是一个二进制文件
curl -L https://get.daocloud.io/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` | sudo tee /usr/local/bin/docker-compose > /dev/null
sudo chmod +x /usr/local/bin/docker-compose
下载harbor安装包
Releases · goharbor/harbor (github.com)
下载完成之后解压包
tar zxvf harbor-offline-installer-v2.4.2.tgz
解压之后进入到harbor目录可以看到一些文件
首先需要执行prepare脚本,会拉取一些镜像到本地
./prepare
注意prepare脚本需要harbor.yml文件,上面那个harbor.yml.tmpl需要重命名或者复制一份为.yml格式
再安装之前需要修改一下ymal文件,主要是修改hostname为自己的ip地址即可
如果不需要https,记得把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: <your ip>
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# 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
# # Uncomment following will enable tls communication between all harbor components
# internal_tls:
# # set enabled to true means internal tls is enabled
# enabled: true
修改完之后就可以安装了
./install.sh
有个地方可能会发生错误,当然提示信息也很明显,我们已经有一个名叫redis的容器了,和harbor的redis容器冲突,所以我们需要重命名一下自己的那个redis
ERROR: for redis Cannot create container for service redis: Conflict. The container name "/redis" is already in use by container "7fdfbb3450db2cf83b0290c6989fedb3f049f4deca99eb4328816fb603a4db5d". You have to remove (or rename) that container to be able to reuse that name.
安装完成之后可以查看一下各个组件的状态
docker-compose ps
最后可以访问我们设置的hostname来访问harbor
默认的用户名和密码在harbor.yml文件中可以找到
默认用户:admin,密码:Harbor12345
如果要向harbor推送镜像,而没有启用https的话,可能会报错拒绝访问,这时候我们需要添加一个可信任仓库地址
制作镜像的时候需要打标签,具体可见每个仓库的推送命令,会有提示
记得要先登录在push