什么是 harbor
harbor是一个开源的云原生镜像仓库,它允许用户存储、签名、和分发docker镜像。可以将 harbor 看作是私有的docker hub ,它提供了更新安全性和控制性,让组织能够安全的存储和管理镜像
harbor RBAC(基于角色访问控制),可以对不同的用户和用户组进行领过全向控制,并且提供灵活的复制和同步策略,可以实现多个 harbor 实例的镜像复制和同步
Harbor的特性
-
基于角色控制
-
基于镜像的复制策略
-
支持 LDAP/AD
-
镜像删除和垃圾回收
-
图形化用户界面
-
审计管理
-
支持 restful API
docker Harbor核心组件
proxy
通过一个反向代理同意接受浏览器 docker客户端请求的,并且将请求转发给后端不同的服务,是一个方向海里组件
registry
发原则存储docker镜像 处理 docker pull/push 命令来上传和下载
core services
horbar的核心功能,包括 ui、oken、webhook
webhook:负责网站的一些服务功能
token:令牌 提供身份认证服务
ui:显示可视化界面
databases
为 core services 提供数据的服务 数据库记录镜像的元信息以及用户的身份信息
log collector
负责收集其他组件的一些日志,一共我们进行分析以及健康检查等
job services
只要做镜像物质,本地镜像可以同步到其它harbor私有仓库中
adminserver
主要是做一个后端配置数据管理者,没有太多功能
Docker-Harbor数据流向
docker私有仓库的过程:
-
所有的请求或热味的操作都会首先交给 proxy(反向代理)
-
proxy 会先将请求转发给后端 core services
-
core services包括 ui【web界面】、token【身份认证】、webhook【网站的一些服务功能 】
-
转发给 regiistry【镜像存储】,若需要下载镜像等权限操作,需要通过 core services中 token令牌的身份验证服务才行
-
每一次下载和上传 都会产生操作记录,生成日志 ,保存 databases中
-
databases 记录保存镜像源信息以及用户与组身份 的信息,通过验证授权才能与允许相关操作
私有仓库指向私有仓库的方式有两种
1. /etc/dockerdaemon.josn
2. /usr/lib/systemd/system/docker.service
添加: insecure-registrues $harbor_ip (私有仓库的ip地址)
搭建本地私有仓库
#首先下载 registry 镜像
docker pull registry
#在 daemon.json 文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.86.44:5000"], #添加,注意用逗号结尾
"registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}
systemctl restart docker.service
#运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
#为镜像打标签
docker tag centos:7 192.168.86.44:5000/centos:v1
#上传到私有仓库
docker push 192.168.86.44:5000/centos:v1
#列出私有仓库的所有镜像
curl http://192.168.86.44:5000/v2/_catalog
#出私有仓库的 centos 镜像有哪些tag
curl http://192.168.86.44:5000/v2/centos/tags/list
#先删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.86.44:5000/centos:v1
部署 Docker-Compose 服务
1、下载或者上传 Docker-Compose
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
2、部署 Harbor 服务
(1)下载或上传 Harbor 安装程序
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
(2)修改harbor安装的配置文件
vim /usr/local/harbor/harbor.cfg
--5行
hostname = 192.168.86.44
【修改,设置为Harbor服务器的IP地址或者域名】
---59行
admin/Harbor12345
harbor_admin_password = Harbor12345
【指定管理员的初始密码,默认的用户名/密码是】
3、 启动 Harbor
cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 【先删除registry容器】以 pull 镜像并启动容器
4、查看 Harbor 启动镜像
cd /usr/local/harbor/
docker-compose ps
创建一个新项目
(1)浏览器访问:http://192.168.86.44 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345
(2)输入用户名和密码登录界面后可以创建一个新项目。点击"+项目"按钮
(3)填写项目名称为"myproject-kgc",点击"确定"按钮,创建新项目
(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听。
//登录 Harbor
docker login http://127.0.0.1
Useradd:admin
Password:Harbor12345
//下载镜像进行测试
docker pull nginx
//将镜像打标签
格式:docker tag 镜像:标签 仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/ky30-kgc/nginx:v1
//上传镜像到 Harbor
docker push 127.0.0.1/ky30-kgc/nginx:v1
(5)在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息