企业级Docker镜像仓库Harbor部署与使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 企业级Docker镜像仓库Harbor部署与使用

在实际生产运维中,往往需要把镜像发布到几十、上百台或更多的节点上。这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的,我们需要一个像Git仓库一样系统来统一管理镜像。这里介绍的是一个企业级镜像仓库Harbor,将作为我们容器云平台的镜像仓库中心。

Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。 

官方地址:https://vmware.github.io

Github:https://github.com/goharbor/harbor

image.png


1、Harbor主要功能

  • 基于角色访问控制(RBAC)
    在企业中,通常有不同的开发团队负责不同的项目,镜像像代码一样,每个人角色不同需求也不同,因此就需要访问权限控制,根据角色分配相应的权限。
    例如,开发人员需要对项目构建这就用到读写权限(push/pull),测试人员只需要读权限(pull),运维一般管理镜像仓库,具备权限分配能力,项目经理具有所有权限。
  • 镜像复制
    可以将仓库中的镜像同步到远程的Harbor,类似于MySQL主从同步功能。
  • LDAP
    Harbor支持LDAP认证,可以很轻易接入已有的LDAP。
  • 镜像删除和空间回收
    Harbor支持在Web删除镜像,回收无用的镜像,释放磁盘空间。
  • 图形页面管理
    用户很方面搜索镜像及项目管理。
  • 审计
    对仓库的所有操作都有记录。
  • REST API
    完整的API,方便与外部集成。

2、Harbor组件


组件 功能
harbor-adminserver 配置管理中心
harbor-db Mysql数据库
harbor-jobservice 负责镜像复制
harbor-log 记录操作日志
harbor-ui Web管理页面和API
nginx 前端代理,负责前端页面和镜像上传/下载转发
redis 会话
registry 镜像存储

3、Harbor部署

环境要求:


image.png

Harbor安装有3种方式:

  • 在线安装:从Docker Hub下载Harbor相关镜像,因此安装软件包非常小
  • 离线安装:安装包包含部署的相关镜像,因此安装包比较大
  • OVA安装程序:当用户具有vCenter环境时,使用此安装程序,在部署OVA后启动Harbor

我们采用离线安装,首先下载离线安装包:https://github.com/vmware/harbor/releases

HTTP方式部署

基本配置:

image.png

准备配置文件:

# ./prepare


安装并启动Harbor:


# ./install.sh


查看运行状态:

image.png

部署完成,是不是很简单呢!

如果有非Up状态,先看日志:

# ls /var/log/harbor/

adminserver.log  jobservice.log  mysql.log  proxy.log  redis.log  registry.log  ui.log


HTTPS方式部署:

如果想以https加密方式提供服务可以参考这个免费的视频教程: https://ke.qq.com/course/311382

或者参考官方文档:https://github.com/vmware/harbor/blob/master/docs/configure_https.md


4、登录Web页面


浏览器输入:http://10.206.240.188

账号:admin  

密码:Harbor12345



这里有4个项目,library是默认自带的,通常用这个存储一些公共的镜像,这个项目下镜像谁都可以pull,但不能push,push需要先登录。其他3个项目是我自己创建的,请忽略。

5、library项目赋予新用户push权限

先创建一个用户:

image.png

进入library项目,将用户加入这个成员:

image.png

这样lizhenliang用户就具备了对这个library项目的push权限。

注:创建新项目赋予用户权限同等方式。

7、上传镜像

接下来将刚才构建的镜像推送到Harbor仓库,先看看我们要推送的镜像:

image.png

在推送之前,需要注意第一列,这个完整格式是:

image.png

如果镜像只放在本地存储REPOSITORY写什么都可以,但推送到镜像仓库就必须指定仓库中心地址。

所以,先打重命名REPOSITORY,其实就是引用源镜像标记了一个目标镜像:

image.png

访问拒绝,刚说过,push需先登录:

image.png

8、下载镜像

其他Docker主机怎么下载刚推送的镜像呢?

由于我们搭建的Harbor是以HTTP提供服务的,而Docker CLI默认以HTTPS 访问仓库,所以要先配置可信任,否则pull镜像仓库失败。如果是HTTPS提供服务就不用配置这一步了。

image.png

pull的地址跟push时是一样的。

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
测试技术 Linux 网络安全
【Docker项目实战】使用Docker部署RSS阅读器yarr
【6月更文挑战第22天】使用Docker部署RSS阅读器yarr
15 3
|
4天前
|
Docker 容器
如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格(二)
使用Docker部署的WPS Office服务可以通过内网穿透工具Cpolar实现远程访问。首先,创建一个名为“wps office”的隧道,选择HTTP协议和3000端口,分配免费的随机域名,并指定中国地区。然后,通过Cpolar的管理界面获取HTTP公网地址,用以远程访问WPS Office。由于随机域名会变化,可以升级Cpolar套餐并保留一个二级子域名,确保长期稳定的远程访问。配置子域名后,更新隧道设置,完成固定公网地址的绑定,从而实现随时随地通过固定地址访问WPS Office。
|
1天前
|
应用服务中间件 nginx Docker
详细解读docker部署项目
详细解读docker部署项目
|
1天前
|
前端开发 Java Docker
Docker 部署项目,真的太雅了~
Docker 部署项目,真的太雅了~
9 0
|
1天前
|
Kubernetes 监控 数据安全/隐私保护
基于Docker的淘客返利平台部署
基于Docker的淘客返利平台部署
|
2天前
|
应用服务中间件 Linux 数据安全/隐私保护
Linux+docker部署项目
Linux+docker部署项目
11 0
|
4天前
|
安全 Linux 网络安全
如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格(一)
在群晖NAS上使用Docker部署WPS Office并结合Cpolar内网穿透的步骤包括: 1. 通过SSH命令行拉取`linuxserver/wps-office`镜像。 2. 在群晖容器管理界面运行镜像,设置启动选项和端口映射。 3. 本地访问群晖IP:3000端口以使用WPS Office。 4. 安装Cpolar套件,手动添加并安装到群晖,通过9200端口访问其Web管理界面。 5. 使用Cpolar配置内网穿透,实现远程访问WPS Office。 这一过程允许用户即使在没有公网IP的情况下,也能通过Cpolar将内网的WPS Office服务暴露到公网,便于远程办公和文档处理。
|
运维 Kubernetes 前端开发
【云原生】阿里云服务器部署 Docker Swarm集群
阿里云服务器 一键部署 Docker Swarm 集群!
580 0
【云原生】阿里云服务器部署 Docker Swarm集群
|
10天前
|
NoSQL 关系型数据库 Redis
Docker的通俗理解和通过宿主机端口访问Redis容器的实例
本文目标:引导初学者入门Docker,理解镜像、容器和宿主机概念,学习常用Docker命令,特别是如何创建并从Redis容器通过宿主机端口访问。 关键点: - Docker核心:镜像(类)、容器(实例)、宿主机(运行环境)。 - `docker pull` 拉取镜像,如 `redis:3.0`。 - `docker run -d --name` 后台运行容器,如 `my-redis`。 - `-p` 参数做端口映射,如 `6379:6379`。 - `docker exec -it` 交互式进入容器,如 `bash` 或执行命令。
|
弹性计算 Linux Shell
阿里云一键部署 Docker Datacenter
使用阿里云ROS一键部署Docker Datacenter
12243 1