Harbor安装
Harbor
- 在生产运维环境中,伴随镜像和项目越来越多,单台docker主机无法支撑那么多业务,而Harbor是一个企业级镜像仓库Harbor,将作为我们容器云平台的镜像仓库中心。
- 官网直通车
Harbor功能
基于角色访问控制(RBAC)
在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。
例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。
镜像复制
可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能。
LDAP
Harbor支持LDAP认证,可以很轻易接入已有的LDAP。
镜像删除和空间回收
Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。
图形页面管理
用户很方面搜索镜像及项目管理。
审计
对仓库的所有操作都有记录。
REST API
完整的API,方便与外部集成。
Harbor组件组成
组件 | 功能 |
---|---|
harbor-adminserver | 配置管理中心 |
harbor-db | Mysql数据库 |
harbor-jobservice | 负责镜像复制 |
harbor-log | 记录操作日志 |
harbor-ui | Web管理页面和API |
nginx | 前端代理,负责前端页面和镜像上传/下载转发 |
redis | 会话 |
registry | 镜像存储 |
环境准备工作
1. 关闭防火墙及selinux,生产环境建议不要关闭。
1 | # 关闭防火墙 |
2. 安装docker 安装依赖工具
1 | yum install -y yum-utils |
设置稳定的存储库
1 | yum-config-manager \ |
直接安装最新docker版本
1 | yum -y install docker-ce docker-ce-cli containerd.io |
启动docker并设置开机启动
1 | systemctl start docker && systemctl enable docker |
3. 安装docker-compose
下载docker-compose,最新版地址:docker-compose
1 | curl -L https://github.com/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
若是github访问太慢,可以用daocloud下载
1 | curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose |
设置权限
1 | chmod +x /usr/local/bin/docker-compose |
检查
1 | docker-compose -version |
安装Harbor
这里使用离线方式安装,安装版本是:Harbor
解压
1 | tar -xzvf harbor-offline-installer-xxx.tgz |
编辑:harbor.yml
1 | # 拷贝副本 |
HTTP方式
修改:hostname为自己服务器IP,此处为内网部署,注释https相关选项,设置管理员密码:harbor_admin_password: xxxx
执行生成配置文件
1 | ./prepare |
安装并启动Harbor
1 | ./install.sh |
HTTPS方式
在生产环境中,我们应该从CA获得证书。在测试或开发环境中,我们可以生成自己的CA。要生成CA证书,请运行以下命令。
1. 生成CA证书私钥。
创建保存证书的位置(可选)
1 | # 创建目录 |
2. 生成CA证书。
如果使用IP地址,需要先执行以下操作:
1 | cd /root |
调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性。
1 | openssl req -x509 -new -nodes -sha512 -days 3650 \ |
编辑配置文件harbor.yml 设置证书路径
执行生成配置文件
1 | ./prepare |
安装并启动Harbor
1 | ./install.sh |
使用
根据页面提示使用,默认端口80,此处以springboot本地项目示例
1. 创建镜像 编写Dockefile文件,并放入springboot项目根目录。
注意:ADD build/libs/*.jar 修改为您的jar包所在目录
创建Dockerfile
1 | # 指定基础镜像 |
在Dockerfile同级目录执行构建命令
1 | docker build -t yh-university-macau:20220723 . |
2. 推送镜像
如果是Windows本地推送镜像请修改用户目录下(如:C:\Users\zhang\.docker)的daemon.json文件增加”insecure-registries”:[“192.168.3.212”]配置
1 | # 登录 |
3. 拉取镜像
由于k8s中的container默认拉取镜像使用的是HTTPS方式,因此需要在k8s的每个节点都设置配置文件内容如下: 搜索:[plugins.”io.containerd.grpc.v1.cri”.registry] 并更改如下配置
1 | [plugins."io.containerd.grpc.v1.cri".registry] |
重启container
1 | systemctl restart containerd |