一:介绍
- Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。
- Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。
二:Harbor核心组件解释
- Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
- db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
- UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
- jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
- Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
- Registry:镜像仓库,负责存储镜像文件。
- Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
三:Harbor和Registry的比较
Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。
1.提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
2.提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
3.支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
4.良好的安全机制
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
5.Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。
四:Harbor简单部署
1.安装docker-compose
yum install python-pip;pip install docker-compose
[root@foundation11 harbor]# docker-compose --version
docker-compose version 1.23.2, build 1110ad0
2.下载Harbor离线包
https://github.com/vmware/harbor/releases 3.解压,进入安装包
[root@node03 ~]# tar -xvf harbor-online-installer-tgz ; cd harbor
4.修改docker-compose.notary.yml和harbor.cfg
vim harbor.cfg
hostname = 172.25.11.250 #不可设置为自身地址
db_password = root123
max_job_workers = 3
harbor_admin_password = westos
db_host = mysql
db_password = root123
db_port = 3306
db_user = root
./prepare
systemctl start docker
./install.sh
[root@foundation11 harbor]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Up (health:
starting)
harbor-core /harbor/start.sh Up (health:
starting)
harbor-db /entrypoint.sh Up (healthy) 5432/tcp
postgres
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c Up (healthy) 127.0.0.1:1514->1
/usr/local/bin/ 0514/tcp
...
harbor-portal nginx -g daemon Up (healthy) 80/tcp
off;
nginx nginx -g daemon Up (healthy) 0.0.0.0:443->443/
off; tcp, 0.0.0.0:4443
->4443/tcp, 0.0.0
.0:80->80/tcp
redis docker- Up 6379/tcp
entrypoint.sh
redis ...
registry /entrypoint.sh Up (healthy) 5000/tcp
/etc/regist ...
registryctl /harbor/start.sh Up (healthy)
[root@foundation11 harbor]# pwd
/root/Desktop/harbor
[root@foundation11 harbor]# docker-compose start
Starting log ... done
Starting postgresql ... done
Starting redis ... done
Starting adminserver ... done
Starting registry ... done
Starting core ... done
Starting jobservice ... done
Starting portal ... done
Starting proxy ... done
Starting registryctl ... done
admin
Harbor12345
默认登陆密码
[root@foundation11 harbor]# docker login 172.25.11.250
Username: admin
Password:
Error response from daemon: Get https://www.westos.com/v2/: dial tcp 172.25.11.250:443: connect: connection refused
出现问题
标签:...,harbor,Harbor,Up,仓库,镜像,docker,搭建 From: https://blog.51cto.com/u_15883840/5870332