Harbor概述
1.Harbor定义
私有,自定义用户的形式登陆仓库,拉取或者上传镜像。(内部管理的用户)
Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。
2.Docker Harbor的特性
(1)、基于角色进行控制,用户和仓库都是基于项目进行的,用户在每个项目中都可以拥有不同的权限;
(2)、基于镜像,在不同的harbor实例之间进行复制;
(3)、harbor自带一个数据库,AD/LDAP(类似于数据库中的表),对已经存在的用户进行认证和管理;
(4)、镜像删除和垃圾回收,仓库中的镜像可以被删除(基于权限控制),也可以回收镜像占用的空间;
(5)、图形化界面的,用户可以直接通过浏览器来对镜像仓库进行管理;
(6)、审计管理,所有对镜像仓库的操作都可以被记录溯源;
(7)、支持API操作,管理员可以基于API调用接口,和更多的其他的程序进行集成。
端口:主机和主机之间的通信
API接口:应用和应用之间的接口
3.Docker Harbor的组件
●Proxy:安装完了harbor之后,他会自动生成一个nginx的容器,自动对外映射,仓库默认80端口,nginx作为前端的代理,在harbor当中,registry,UI,TOKEN,都在nginx的反向代理后面。通过nginx的代理,可以把请求转发到后端不同的应用。
●Registry:负责存储镜像,docker pull/push的命令都由其负责。用户进行访问控制,不同的用户对docker镜像有不同的读写权限。 Registry每次都会指向一个不同的token,token强制用户每次的pull、push都必须带一个合法的token(公钥对),Registry会通过公钥对,进行解密验证,身份合法才能指定操作。
●CORE SERVICE:harbor的核心功能,主要提供以下3个服务:
(1)、UI:提供图形化界面
(2)、Webhook:仓库上所有镜像的变化(增删改),都会传送给webhook,以显示在UI界面上。 (3)、Token服务:签发每一次push和pull的公钥对,用来和仓库之间进行权限认证。
●Database:harbor-db,为core services提供数据库存储服务,负责存储用户权限,审计日志,docker 镜像的分组和项目信息。
●Job service:主要用于镜像的复制,本地镜像可以同步到远程harbor上。
●Log collector(harbor-log):统一日志收集工具。
Haobor都是基于docker 容器化部署的,docker-compose一件编排、安装。
Harbor部署
1.实验组件
20.0.0.10:docker1 安装仓库
20.0.0.20:docker2 客户端
20.0.0.30:docker3 安装仓库、实现远程同步
2.部署Docker-Compose服务
docker1:
cd /opt
--上传docker-compose-linux-x86_64--
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
3.部署Harbor服务
cd /opt
--上传harbor-offline-installer-v2.8.1.tgz--
tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
--5--
hostname: 20.0.0.10--12--
注释掉https
# 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--34--
harbor_admin_password: 123456
4.启动Harbor
cd /usr/local/harbor/#编译环境
./prepare./install.sh浏览器访问:20.0.0.10
Harbor实操
1.本地上传镜像
docker pull nginx:1.22.0
docker tag nginx:1.22.0 127.0.0.1/library/nginx:pup1
docker login -u admin -p 123456 http://127.0.0.1
docker push 127.0.0.1/library/nginx:pup1
2.新建项目本地上传镜像
新建项目
创建用户
准备镜像
docker logout
docker login -u user-test -p Pupcarrot666 http://127.0.0.1
docker tag nginx:1.22.0 127.0.0.1/pup-project/nginx:pup2
docker images
项目中新建成员
角色:
访客:只有读权限
开发者:读写权限,但是没有删除权限
维护人员:读写权限,修改其他配置项的权限
项目人员:对该项目拥有所有权限
推送镜像
docker push 127.0.0.1/pup-project/nginx:pup2
3.其他客户端上传镜像
docker2:
vim /usr/lib/systemd/system/docker.service
--13修改--
ExecStart=/usr/bin/dockerd --insecure-registry 20.0.0.10
#Docker Registry交互默认使用https,而搭建私有镜像默认使用httpsystemctl daemon-reload
systemctl restart docker
docker login -u user-test -p Pupcarrot666 http://20.0.0.10
docker pull tomcat
docker tag tomcat:latest 20.0.0.10/pup-project/tomcat:pup3
docker push 20.0.0.10/pup-project/tomcat:pup3
4.复制仓库
部署Docker-Compose服务
docker3:
cd /opt
--上传docker-compose-linux-x86_64--
mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
部署Harbor服务
cd /opt
--上传harbor-offline-installer-v2.8.1.tgz--
tar -xf harbor-offline-installer-v2.8.1.tgz -C /usr/local
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
--5--
hostname: 20.0.0.30--12--
注释掉https
# 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--34--
harbor_admin_password: 654321
启动Harbor
cd /usr/local/harbor/#编译环境
./prepare./install.sh浏览器访问:20.0.0.30