赞
踩
在上一篇文章中已经介绍了docker compose配置文件与常用命令, 下面正式进入到Docker企业级容器镜像仓库HarBor的搭建与配置的讲解。
Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装。作为一个企业级私有docker镜像仓库,HarBor提供了更好的性能和安全,以提升用户使用仓库构建和运行环境传输镜像的效率,同时HarBor支持安装在多个仓库节点的镜像资源复制,镜像全部保存在私有仓库中, 确保数据和知识产权在公司内部网络中管控。此外,HarBor也提供了友好的Web UI界面和高级的安全特性,例如:用户和角色的管理、访问控制和活动审计等。
基于角色的访问控制
:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project) 里有不同的权限
镜像复制
:镜像可以在多个Registry实例中复制 (同步)。尤其适合于负载均衡,高可用,混合云和多云的场景
图形化用户界面
:用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间
AD/LDAP 支持
:Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理
审计管理
:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理
国际化
:已拥有英文、中文、德文、日文和俄文的本地化版本,之后将会有更多的语言被添加进来
RESTful API
:RESTful API 提供给管理员对于Harbor更多的操控,使得与其它管理软件集成变得更容易
部署简单
:提供在线和离线两种安装工具,也可以安装到vSphere平台(OVA方式) 虚拟设备
Proxy(代理服务器)
:Harbor组件,例如Register,UI和令牌服务都在代理服务后端,代理将来自客户端和浏览器的流量返回给后端各个服务
Register(仓库)
:负责存储Docker Images和处理docker pull/push命令。HarBor会强制对访问images进行控制,register会将客户端引导到令牌服务,以获取每次push和pull请求的有效令牌
Core services(核心服务)
:Harbor核心功能,主要提供以下服务
UI(图形用户界面)
:提供图形化界面,帮助用户管理registry上的镜像(image),并对用户进行授权
Token(令牌)
:负责根据用户的项目角色为每个Docker push/pull命令签发令牌。如果从Docker客户端发送的请求中没有令牌,注册中心会将请求重定向到Token令牌服务
Webhook
:Webhook是在注册表中配置的一种机制,可以及时获取Registry仓库上image状态的变化情况。同时,HarBor使用Webhook来更新日志、启动复制以及其他一些功能
Database(数据库)
:为Core services(核心服务) 提供数据库服务,负责储存用户权限、审计日志和Docker image分组信息等数据
Job services(Job服务)
:提供Images镜像远程复制功能,可以将本地images同步到其他HarBor实例
Log collector(日志采集器)
:帮助监控Harbor运行,负责收集其他组件的日志
Harbor 和 Registry都是Docker的镜像仓库,但相比较于Regisrty来说,HarBor具有很多的优点,其优点如下所示:
提供分层传输机制,优化网络传输
:Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象
提供WEB界面,优化用户体验
:只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像
支持水平扩展集群
:当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解
良好的安全机制
:企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。同时HarBor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制,kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制
官方安装文档:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/installation_guide.md
资源 | 容量 | 描述 |
---|---|---|
cpu | 最少2 cpu | 4 cpu最佳 |
内存 | 最少4 GB | 8 GB最佳 |
磁盘 | 最少40 GB | 160 GB最佳 |
软件 | 版本要求 | 描述 |
---|---|---|
Python | 2.7或更高版本 | 请注意,您可能必须在默认未安装Python解释器的Linux发行版(Gentoo,Arch)上安装Python |
Docker engine | 1.10或更高版本 | 有关安装说明,请参阅:docker简介与安装 |
Docker Compose | 1.6.0或更高版本 | 有关安装说明,请参阅:docker compose简介与安装 |
Openssl | 最好是最新的 | 生成HarBor证书和密钥 |
端口 | 协议 | 描述 |
---|---|---|
443 | HTTPS | Harbor门户和核心API将在此端口上接受https协议的请求 |
4443 | HTTPS | 与Harbor的Docker Content Trust服务的连接,仅在启用Notary时才需要 |
80 | HTTP | Harbor门户和核心API将在此端口上接受HTTP协议的请求 |
Docker安装:https://blog.csdn.net/qq_39135287/article/details/101012149#CentOS7Docker_CE__59
Docker Compose安装:https://blog.csdn.net/qq_39135287/article/details/104060264#pythonpip_4
推荐使用python-pip方式安装Docker Compose,因为在安装过程中,会顺便将HarBor需要的Python 和 Openssl给安装上
HarBor的下载地址:https://github.com/goharbor/harbor/releases
HarBor安装分为在线安装和离线安装 (这里我选择下载离线安装包),其区别如下:
Online installer(在线安装)
:The installer downloads Harbor’s images from Docker hub. For this reason, the installer is very small in size. (安装程序从Docker hub下载Harbor的图像。因此,安装程序非常小。)
Offline installer(离线安装)
:Use this installer when the host does not have an Internet connection. The installer contains pre-built images so its size is larger. (当主机没有互联网连接时使用此安装程序。安装程序包含预构建的映像,因此其大小较大。)
如果觉得下载比较繁琐,我已经提供了HarBor安装包
链接:https://pan.baidu.com/s/1y3kBbkin_SG1PD-I6K1Dow
提取码:ofjx
下载完成之后,打开WinSCP,把我们下载好的HarBor安装包,上传到Linux的 /usr/local/software 文件目录下 (注意:这里的software文件目录需要我们自行创建,创建software目录是方便我们管理安装的软件)
//1、进入到software目录下
cd /usr/local/software/
//2、解压HarBor安装包
tar xzf harbor-offline-installer-v1.9.4.tgz
//1、进入到harbor解压目录下
cd harbor/
//2、查看当前目录下的文件
ls
//3、编辑harbor.yml配置文件
vim harbor.yml
(1)、修改hostname属性 (提示
:不要使用 localhost 或者 127.0.0.1,因为HarBor需要被外部客户端访问)
hostname: reg.mydomain.com
修改为
hostname: Linux服务器ip地址 或者 Linux服务器的域名
(2)、修改http端口,默认为80端口,为了避免与Nginx端口冲突,所以这里我修改为6278端口 (端口号的修改可以任意,只要不与其他端口号冲突即可)
http:
port: 80
修改为
http:
port: 6278
(3)、修改管理员(admin) 登录HarBor UI界面的密码,默认为账号为admin,密码为Harbor12345
harbor_admin_password: Harbor12345
修改为
harbor_admin_password: 123456
//1、初始化配置文件
./prepare
//2、安装HarBor
./install.sh
//3、查看镜像运行状态
docke-compose ps
//常用命令
docker-compose up -d //后台启动HarBor
docker-compose start //启动HarBor
docker-compose restart //重启HarBor
docker-compose stop //停止HarBor
docker-compose down //停止HarBor并删除容器
打开浏览器,访问HarBor,HarBor的访问地址为你在harbor.yml配置文件中设置的hostname:http端口 (这里我的为 http://192.168.198.145:6278)
用户名为:admin,密码为harbor.yml配置文件中设置的harbor_admin_password
1、选择配置管理 → 邮箱,进入到邮箱配置页面
2、修改相关配置 (以QQ邮箱为例),QQ授权码获取方式
邮件服务器: 由 smtp.mydomain.com 修改为 smtp.qq.com
邮件服务器端口: 默认为25,也可以修改为465
用户名: 你的qq邮箱
密码: 你的qq邮箱授权码
邮件来源: qq昵称<你的qq邮箱>
3、测试邮件服务器是否配置成功,点击"测试邮件服务器"按钮,如果出现"邮件服务器连通正常"提示,则表示邮箱配置成功
//1、进入到docker目录下
cd /etc/docker/
//2、编辑daemon.json配置文件
vim daemon.json
//3、添加HarBor仓库地址,该步骤用于让docker信任HarBor仓库地址,
{"insecure-registries": ["harbor.yml配置文件中设置的hostname:http端口"]}
注意
:"registry-mirrors"一行末尾有逗号,
systemctl restart docker
HarBor仓库中默认会有一个"library"的项目,所有镜像都必须存放到项目下,这里我们自己新建一个"tomcat"项目,用于存放tomcat镜像
输入项目名称, 设置项目的访问级别,项目级别分为两种:公开和私有
公开
:表示拉取镜像时,不需要使用"docker login"命令登录到HarBor,即可拉取镜像,但是上传镜像时,需要使用"docker login"命令,才能上传镜像
私有
:表示拉取 和 上传镜像时,都需要使用"docker login"命令登录到HarBor,即可拉取 或 上传镜像
存储数量 和 存储容量可以根据自己情况来设置 (这里我选择默认配置),最后点击"确定"按钮,创建项目
//1、标记此镜像为HarBor仓库的镜像
docker tag 镜像ID/镜像名称[:版本号] harbor.yml配置文件中设置的hostname:http端口/项目名称/镜像名称[:版本号]
//2、登录HarBor仓库
docker login harbor.yml配置文件中设置的hostname:http端口
username: admin
Password: harbor.yml配置文件中设置的harbor_admin_password
//3、上传标记的镜像
docker push harbor.yml配置文件中设置的hostname:http端口/项目名称/镜像名称[:版本号]
以tomcat:8为例,测试镜像上传到HarBor仓库
查看镜像是否上传成功,可以看到tomcat项目的镜像仓库数 由0 变成 1
点击tomcat项目,可以查看该项目下的所有镜像
点击tomcat/tomcat镜像,可以查看该镜像的具体信息
//1、如果项目的访问级别为私有,则需要先登录到HarBor仓库 (访问级别为公开则可以跳过该步骤)
//私有项目如果不登录,则会报denied: requested access to the resource is denied 错误
docker login harbor.yml配置文件中设置的hostname:http端口
username: admin
Password: harbor.yml配置文件中设置的harbor_admin_password
//2、拉取镜像到本地
docker pull harbor.yml配置文件中设置的hostname:http端口/项目名称/镜像名称[:版本号]
勾选需要删除的镜像,点击"删除"按钮,在"删除镜像仓库确认"弹出框中,再次点击"删除"按钮,即可删除该镜像
Docker入门到实践系列文章列表:
Docker入门到实践 (一) docker简介与安装
Docker入门到实践 (二) docker常用命令讲解
Docker入门到实践 (三) Dockerfile解析与镜像制作
Docker入门到实践 (四) docker容器数据卷与数据卷容器
Docker入门到实践 (五) docker数据的备份、恢复与迁移
Docker入门到实践 (六) docker网络模式详解以及容器间的网络通信
Docker入门到实践 (七) docker常用软件的安装
Docker入门到实践 (八) 本地镜像推送到阿里云 和 下载镜像到本地
Docker入门到实践 (九) docker可视化界面portainer的安装与使用
Docker入门到实践 (十) IDEA集成Docker构建容器镜像,部署项目
Docker入门到实践 (十一) docker私有仓库的搭建与配置
Docker入门到实践 (十二) docker compose简介与安装
Docker入门到实践 (十三) docker compose配置文件与常用命令讲解
Docker入门到实践 (十四) docker企业级容器镜像仓库HarBor的搭建与配置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。