Harbor 仓库介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
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和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。
安装环境
1.docker 版本17.06.0+ 2.docker-compose 版本 1.18.0+ 3.关闭防火墙,安全性 4.CentOS 7 系统,可联网
一、安装docker步骤
1.添加docker-ce源
cd /etc/yum.repos.d wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注意:若无法使用wget下载,可先下载,再上传到Linux相关目录下
2.安装docker
yum -y install docker-ce
3.启动docker
systemctl start docker
4.将docker设置为开机自启
systemctl enable docker
二、安装docker-compse
1.先安装epel源
yum install -y epel-release
2.安装docker-compose
yum -y install docker-compose
三、安装harbor仓库
1.下载harbor离线安装包
下载地址: https://storage.googleapis.com/harbor-releases/ 可选择最新版本下载
wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v2.0.0.tgz
注意:若使用wget 无法下载,出现如下图报错:
解决方法:在window浏览器直接打开链接下载,在上传到Linux系统。
2.解压harbor
tar xvf harbor-offline-installer-v2.0.0.tgz -C /usr/local
3.导入docker镜像
cd /usr/local/harbor docker image load -i harbor.v2.0.0.tar.gz
4.修改第harbor.yml配置文件
cd /usr/local/harbor cp harbor.yml.tmpl harbor.yml #拷贝配置模板 vim harbor.yml
hostname = 192.168.156.133
再注释掉https相关端口号,其他可根据需要修改!
注意:
1.安装v2.x系列,必须先导入镜像,再拷贝harbor.yml.tmpl模板,顺序不能乱,并且直接使用harbor.yml.tmpl模板作为配置文件,只能使用harbor.yml 作为配置文件。 2.v1.x系列安装没有导入docker镜像这一步,直接修改配置文件harbor.cfg 即可,后面操作一样。
5.检测harbor
./prepare
6.安装harbor
./install.sh
7.查看服务器运行的容器
docker ps
8.访问Harbor管理系统
地址: http://192.168.154.133 默认账号:admin 密码: Harbor12345
9.相关命令
docker-compose up -d # 后台启动,如果容器不存在根据镜像自动创建 docker-compose down -v # 停止容器并删除容器 docker-compose start # 启动容器,容器不存在就无法启动,不会自动创建镜像 docker-compose stop # 停止容器
10.创建项目
上传镜像
1.下载官方tomcat镜像
docker pull tomcat
注意:如下载过慢,可以添加:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://fskvstob.mirror.aliyuncs.com/"]
}
systemctl daemon-reload #重新加载 systemctl restart docker #重启docker
2.给tomcat镜像打标签
docker tag tomcat 192.168.154.133/maven-test01/tomcat:v1
3.登陆harbor
docker login 192.168.154.133
此时会报错如下:
解决方案:
cd /usr/lib/systemd/system vim docker.service
--insecure-registry=192.168.154.133
systemctl daemon-reload systemctl restart docker #重启服务
4.再次登录
docker login 192.168.154.133
5.上传镜像到仓库
docker push 192.168.154.133/maven-test01/tomcat:v1