CentosOS搭建Harbor私有Docker仓库,及Harbor使用
Posted 小毕超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentosOS搭建Harbor私有Docker仓库,及Harbor使用相关的知识,希望对你有一定的参考价值。
一、Harbor
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来说,它具有很多的优势。
- 提供分层传输机制,优化网络传输
Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。 - 提供WEB界面,优化用户体验
只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。 - 支持水平扩展集群
当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。 - 良好的安全机制
企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。 - Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。
四、Harbor安装
Harbor依赖Docker 和 Docker-Compose组件,所以安装Harbor要先安装Docker和Docker-Compose
一、安装Docker
请参考下面一篇我的博客:
Docker介绍及应用
二、安装Docker-Compose
请参考下面一篇我的博客:
Docker-Compose 容器编排技术
三、安装Harbor
上面Docker和Docker-Compose 安装好之后就可以来安装Harbor了
-
下载安装包
在线安装包 wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz 或者离线安装包 wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz
下载不下来就使用上面链接去浏览器下载,然后上传至服务器。
-
解压安装包并移动位置
tar -zxvf harbor-offline-installer-v1.5.3.tgz #解压离线安装包 mv harbor /opt/ #移到/opt目录下 cd /opt #进入到/opt目录 ls #查看目录内容
-
进入harbor 目录,修改harbor.cfg配置文件
vim harbor.cfg
hostname = 192.168.0.105 #修改harbor的启动ip,这里需要依据系统ip设置 harbor_admin_password = harbor123 #修改harbor的admin用户的密码
-
配置Harbor
./prepare
-
安装Harbor
./install.sh
出现上面所示,证明安装成功! -
访问Harbor页面,默认端口为80
http://192.168.0.105 #对应自己的ip
用户名\\密码,就是上面配置的:admin\\harbor123
至此Harbor的安装就完毕了。
五、将镜像推送至Harbor
-
创建仓库用户
-
创建私有项目
-
点击上面创建的项目进入项目,给项目添加上面创建的成员
-
在项目的镜像仓库右侧给出了上传镜像的脚本
-
推送tomcat镜像到私有harbor项目中
-
拉取tomcat镜像
docker pull tomcat
-
登录harbor仓库
docker login 192.168.0.105
如果报错:
Error response from daemon: Get https://192.168.0.105/v2/: read tcp 192.168.0.106:47982->192.168.0.105:443: read: connection reset by peer
解决办法:
在daemon.json 中加入harbor仓库的ip和本机的ip:cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://你的ID.mirror.aliyuncs.com"], "insecure-registries":["192.168.0.105","192.168.0.106"] } EOF
重启docker
systemctl daemon-reload systemctl restart docker
-
在项目中标记镜像
docker tag tomcat:latest 192.168.0.105/test/tomcat:latest
-
推送镜像到test项目
docker push 192.168.0.105/test/tomcat:latest
-
查看harbor
-
-
拉取上传的镜像
docker pull 192.168.0.105/test/tomcat:latest
六、修改Harbor端口
harbor默认是80端口,有些情况下80端口会做其他用途,Harbor就没必要占用80端口了。
-
修改harbor.cfg
-
修改 /harbor/docker-compose.yml
-
修改common/templates/registry/config.yml文件加入1180端口
-
停止harbor,重新启动
docker-compose stop
./install.sh
-
客户端连接增加配置
insecure-registries中配置harbor 服务器ip、端口和客户端的ipcat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://你的ID.mirror.aliyuncs.com"], "insecure-registries":["192.168.0.105:1180","192.168.0.106"] } EOF
以上是关于CentosOS搭建Harbor私有Docker仓库,及Harbor使用的主要内容,如果未能解决你的问题,请参考以下文章
Docker------搭建本地私有仓库及Horbor私有仓库
Docker------搭建本地私有仓库及Horbor私有仓库