一、Harbor简介
Harbor是一个开源的企业级Docker Registry管理项目,由VMware公司开源。它提供了比Docker官方公共镜像仓库更为丰富和安全的功能,尤其适合企业环境使用。Harbor的关键特性包括权限管理(RBAC)、LDAP集成、日志审计、管理界面、自我注册、镜像复制以及漏洞扫描等。Harbor的设计旨在支持多用户环境,允许创建不同的用户和组织,并为他们分配不同的权限,确保了资源的安全隔离和管理的灵活性。
二、与Registry2区别
Harbor和Docker Registry 2都是用于存储和管理Docker镜像的解决方案,但它们各有特点和适用场景。Harbor是VMware开源的项目,专为企业级用户设计,提供了更多的安全性和管理功能,而Docker Registry 2是Docker官方提供的私有仓库解决方案,适用于个人和小规模团队使用。以下是他们之间的主要区别:
对比维度 | Harbor | Registry 2 |
---|---|---|
开源状态 | VMware开源项目 | Docker官方提供 |
安全性 | 支持镜像扫描、漏洞检测、安全策略 | 基本安全特性,如用户认证和访问控制 |
管理功能 | 提供管理图形界面、基于角色的访问控制、镜像远程复制同步等 | 较为简单,适合个人和小规模团队使用 |
用户界面 | 提供Web界面 | 可通过第三方工具如docker-registry-ui |
扩展性 | 支持多节点部署和高可用性配置 | 适合小型项目或个人使用 |
企业级功能 | 支持LDAP/AD集成、审计日志等 | 不专门针对企业级需求设计 |
镜像复制和同步 | 支持基于策略的镜像复制机制 | 支持基本的镜像复制功能 |
权限管理 | 基于角色的访问控制机制 | 用户认证和访问控制 |
镜像管理策略 | 支持存储配额、制品保留等 | 基本镜像管理功能 |
互操作性 | 支持Webhook、内容远程复制等 | 可通过第三方工具增加功能 |
支持的语言 | 原生支持中文 | 英文为主 |
部署模式 | 支持离线安装包、all-in-one HA部署 | 通常需要在线安装和配置 |
社区活跃度 | 较高,有专门的社区和贡献者 | 作为Docker的一部分,社区支持广泛 |
三、Harbor安装部署
3.1 下载离线安装包
官方提供的安装包地址: https://github.com/goharbor/harbor/releases
3.2 安装Docker、Docker-Compose
由于下载的离线安装包实际上是通过Docker-Compose来批量启动Harbor所需要的docker容器,所以服务上的先安装好Docker以及Docker-Compose。
(1)docker安装
#查看是否已安装了docker,未安装则查询不出结果
yum list installed | grep docker
#使用yum安装yum-utils工具包
yum install -y yum-utils
#设置国内的阿里云镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
#安装docker
yum install docker-ce docker-ce-cli containerd.io
#启动docker
systemctl start docker
#查看docker版本
docker version
#查看docker运行状态
systemctl status docker
(2)离线安装docker-compose
#docker-compose下载地址
https://github.com/docker/compose/releases/download/v2.3.4/docker-compose-linux-x86_64
#将下载好的安装包上传到服务器后,将文件移动到/usr/local/bin下,并改名为docker-compose
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
#添加docker-compose文件的执行权限
chmod +x /usr/local/bin/docker-compose
#创建软链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#查看docker-compose版本
docker-compose version
3.3 解压安装包
(1)解压命令:tar zxvf harbor-offline-installer-v2.10.2.tgz
(2)进入到解压出来的目录中,里面会有个 harbor.yml.tmpl
,复制一份该文件命名未 harbor.yml
并进行编辑该文件,修改地方主要有以下几点:
## 改为主机ip或者域名
hostname: 127.0.0.1
## 绑定主机端口
port: 88
## admin管理员登录密码
harbor_admin_password: 123456
## 数据卷目录
data_volume: /data/harbor
## 没有证书的话先关闭https
#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
3.4 执行安装
进入到解压目录中,执行安装脚本进行Harbor安装部署。
安装脚本执行成功显示如下:
通过docker ps
命令查看下运行的容器是否正常。
3.5 浏览器访问
输入服务器ip+端口
跳转到harbor的登录页面,使用admin管理员账号进行登录。
四、Harbor使用
4.1 建立镜像仓库
镜像仓库有2种访问级别:
- 公开:任何人都可以直接访问并下载镜像。
- 私有:登陆授权后才允许下载镜像,k8s是不能直接下载的,需要配置安全文件。
4.2 配置docker信任harbor仓库
编辑docker的/etc/docker/daemon.json
配置文件,再里面添加harbor部署的服务器ip:
"insecure-registries": ["127.0.0.1"]
编辑好后,再执行下面命令重启docker服务。
systemctl restart docker
4.3 登录到harbor仓库
通过docker命令登录到harbor仓库:docker login 127.0.0.1:8888
4.4 推送镜像到harbor仓库
(1)先使用tag命令将镜像重名下,改成harbor仓库的ip:端口+镜像名
docker tag redis:latest 127.0.0.1:8888/public/redis:latest
(2)推送镜像
docker push 127.0.0.1:8888/public/redis:latest
4.5 拉取harbor仓库的镜像
docker pull 127.0.0.1:8888/public/redis:latest
五、harbor生命周期操作
在Harbor仓库中进行生命周期操作,包括启动、停止、重启服务,以及删除容器等,通常需要通过docker-compose命令来实现。以下是一些常用的生命周期操作命令:
- 启动Harbor服务:
docker-compose start
- 停止Harbor服务:
docker-compose stop
- 重启Harbor服务:
docker-compose restart
- 删除Harbor容器:
docker-compose down