微服务架构 - 基于Harbor构建本地镜像仓库
之前写过《搭建docker本地镜像仓库并提供权限校验及UI界面》文章,然后有同仁评论道这样做太复杂了,如果Harbor来搭建会更简单同时功能也更强大。于是抽时间研究了基于Harbor构建本地镜像仓库,感觉Harbor的确更简单同时功能更强大,再此感谢各位同仁的建议。下面将基于Harbor构建本地镜像仓库的步骤分享出来,再次欢迎各位同仁点评。
1、Harbor
Harbor是VMware公司开源了企业级Registry项目, 其的目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,额外提供了如下功能:
- Cloud native registry:支持容器镜像和Helm Charts,为云原生环境提供服务
- Role based access control:基于角色的访问控制
- Policy based image replication:基于策略的镜像复制
- Vulnerability Scanning:镜像的漏洞扫描
- LDAP/AD support:AD/LDAP集成
- Image deletion & garbage collection:镜像的删除和空间清理
- Notary:可以保证镜像的真实性
- Graphical user portal:友好的管理UI
- Auditing:日志审计
- RESTful API:提供RESTfull接口易于与外部系统集成
- Easy deployment:部署简单
以上功能是将官网的内容做了简单翻译,如果大家想深层次了解一下,可以查看Harbor官网内容。
2、部署
部署Harbor前,首先得有docker环境、docker-compose的环境,如果大家没有docker环境,可以参考我之前的一篇文章《CentOS7离线部署docker》搭建环境,对于安装docker-compose是很简单,只如下操作:
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
注意:如果运行环境不能直接联外网,则可以先下载二进制包,然后手动放置到相应目录,并授权即可。
有了docker环境、docker-compose的环境后,可以开始部署Harbor了,步骤如下:
(1)、到Github上下载目前Harbor的最新版本,它提供两种下载方式,一种是离线安装包和在线安装包,大家可以根据自己的情况下载,此处下载的是离线安装包
(2)、下载后,将该文件解压到/opt/harbor目录下,当然大家也可以根据自己的使用情况放到相应的目录即可
(3)、此处要开启https访问,所以得生成证书(注意:如果不以https访问,这一个步骤就是不需要的),操作如下:
mkdir /opt/harbor/certs
cd /opt/harbor/certs
openssl req \
-new \
-newkey rsa:4096 \
-days 365 \
-subj "/CN=192.168.208.147" \
-nodes \
-x509 \
-keyout auth.key \
-out auth.cert
注意:此处的ip地址192.168.208.147,是搭建Harbor服务所在的ip地址
(4)、修改harbor.cfg配置文件信息,分别修改以下配置信息:
# 主机名改成本服务器的ip
hostname = 192.168.208.147
# 访问的协议https
ui_url_protocol = https
# 由于前一步我们自己生成了证书,所以该值改为off
customize_crt = off
# ssl证书的路径
ssl_cert = /opt/harbor/certs/auth.cert
# ssl密钥的路径
ssl_cert_key = /opt/harbor/certs/auth.key
# 设置ui系统的admin账号的密码,默认为Harbor12345
harbor_admin_password = Adminjgyw
(5)、安装,执行:
./install.sh
(6)、执行上面的安装脚本,实质是执行docker compose来部署应用的,所以可以通过docker compose命令查看服务信息:
docker-compose ps
结果为:
(7)、访问https://192.168.208.147,如果如下:
3、测试
部署完成之后,测试一下镜像的pull和push功能,首先将admin账号登录,并创建jgyw项目,即:
(1)、点击“新建项目”
(2)、填写项目信息,名称为jgyw,访问级别为公开,即所有人都可以pull镜像下来,即:
(3)、创建用户
(3)、为jgyw项目添加成员,同时角色为开发人员,这样可以将镜像push到该项目中,即:
(4)、push镜像
docker login 192.168.208.147
# 输入上面新建的jgyw用户名和密码即可登录
如果此处发生如下错误:
Error response from daemon: Get https://192.168.208.147/v1/users/: x509: cannot validate certificate for 192.168.208.147 because it doesn't contain any IP SANs
则需要将/usr/lib/systemd/system/docker.service文件中ExecStart值修改为如下形式,即:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.208.147
测试openzipkin/zipkin:2.12.1镜像
将openzipkin/zipkin:2.12.1镜像打上标签,即:
docker tag openzipkin/zipkin:2.12.1 192.168.208.147/jgyw/zipkin:2.12.1
然后执行push命令:
docker push 192.168.208.147/jgyw/zipkin:2.12.1
执行完成后,可以查到jgyw项目中就有了该镜像,即:
(5)、pull镜像
首先将本机的192.168.208.147/jgyw/zipkin:2.12.1镜像删除掉,即:
docker rmi 192.168.208.147/jgyw/zipkin:2.12.1
然后执行pull命令,即:
docker pull 192.168.208.147/jgyw/zipkin:2.12.1
镜像就拉取下来了。
关注我
以你最方便的方式关注我:
微信公众号:
微服务架构 - 基于Harbor构建本地镜像仓库的更多相关文章
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- 搭建docker镜像仓库(二):使用harbor搭建本地镜像仓库
目录 一.系统环境 二.前言 三.Harbor 四.使用harbor搭建私有镜像仓库 4.1 环境介绍 4.2 k8smaster节点安装配置harbor 4.2.1 安装harbor离线包 4.2. ...
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- 微服务架构 | 7.2 构建使用 JWT 令牌存储的 OAuth2 安全认证
目录 前言 1. JWT 令牌存储基础知识 1.1 JSON Web Token 2. 构建使用 JWT 令牌存储的 OAuth2 服务器 2.1 引入 pom.xml 依赖文件 2.2 创建 JWT ...
- linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署
一.部署docker registry 生产环境中我们一般通过搭建本地的私有镜像仓库(docker registry)来拉取镜像. 1.拉取registry镜像 [root@k8 ...
- 微服务架构 | 7.1 基于 OAuth2 的安全认证
目录 前言 1. OAuth2 基础知识 1.1 安全性的 4 个组成部分 1.2 OAuth2 的工作原理 1.3 OAuth2 规范的 4 种类型的授权 1.4 OAuth2 的优势 1.5 OA ...
- 微服务实战(一):微服务架构的优势与不足 - DockOne.io
原文:微服务实战(一):微服务架构的优势与不足 - DockOne.io [编者的话]本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战 ...
- Net分布式系统之五:微服务架构
因工作较忙,抽时间将框架遇到的问题和框架升级设计进行记录. 一.背景&问题 之前框架是一个基于SOA思想设计的分布式框架.各应用通过服务方式提供使用,服务之间通信是RPC方式调用,具体实现基于 ...
- 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足
Posted on 2016年5月4日 编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战. 作者介绍:Chris Ric ...
随机推荐
- Windows 10创意者更新ISO发布!官方下载
http://news.mydrivers.com/1/526/526719.htm 去年7月份,微软面向Windows 10推出了“周年更新”,让系统变得更加稳定好用.今天,Windows 10迎来 ...
- 关于.net 保存 decimal类型数据到SQLServer2012数据库时自动取整的问题
公司同事问我有没有遇到过decimal类型数据入库时,会自动取整的问题(比如12.3入库后值是12,12.8入库后值是13,入库后自动四舍五入自动取整): 之前就遇到过从数据去decimal类型数据时 ...
- 为什么Python编程被国家教育如此重视?请开始你的表演!
高考新宠 在高考更改之前,提起编程,人们可能更多的会想起c语言之类的. 然而,高考更始之后,Python这门编程说话一夜之间传进了千家万户. 现实上,在IEEE(美国电气电子工程师学会出书的旗舰杂志) ...
- 关于css盒模型
在css中,width和height指的是内容区域的宽度和高度.增加内边距,边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸.假设框的每个边上有10个像素的外边距和5像素的内边距,如果希望 ...
- JS的进阶技巧
前言 你真的了解JS吗,看完全篇,你可能对人生产生疑问. typeof typeof运算符,把类型信息当做字符串返回. //正则表达式 是个什么 ? typeof /s/ // object //nu ...
- hexo+github创建属于自己的博客
配置环境 安装Node(必须) 作用:用来生成静态页面的 到Node.js官网下载相应平台的最新版本,一路安装即可. 安装Git(必须) 作用:把本地的hexo内容提交到github上去. 安装Xco ...
- 基于Spring的RPC通讯模型.
一.概念和原理 RPC(remote procedure call),远程过程调用,是客户端应用和服务端之间的会话.在客户端,它所需要的一些功能并不在该应用的实现范围之内,所以应用要向提供这些功能的其 ...
- 计算器源码(数学式python)
''' ******************** 请计算表达式: 1 - 2 * ( (60-30 +(-40.0/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/1 ...
- SSM-SpringMVC-18:SpringMVC中参数自动装配
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 在处理方法中,参数写上之后,只要符合特定规则,就可以自动装配 首先 其次是:自定义的参数的自动装配: 案例如 ...
- Manifest文件的最新理解
今天看了Manifest文件内容的相关视频,感觉对知识的理解深刻了一些: 首先,先来说说这个文件的作用,这个文件可以说是聚集了很多个标签,其实对于每个主标签,在将来编译的时候,都会被处理成一个类,而标 ...