SUSE Portus + Docker Registry在Rancher环境下的部署实战

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

在正文之前,我们先来看一下,如果没有容器,通常会如何部署 Docker Registry?关于这个问题,我简单画了一个草图: 


wKiom1iro8zioiWiAADUvw3I1EE218.jpg


下面简单解释一下:


  • Nginx:用来做 Docker Registry 的代理和软件负载均衡Keepalived 采用主备加虚拟 IP 的方式,解决 Nginx 的单点问题,保证 Nginx 服务的高可用性。


  • Docker Registry:这是 Docker 官方开源的私有镜像仓库项目,对应 github 上的 docker-distribution 项目,也是私有镜像仓库的核心。


  • Redis:大名鼎鼎的 Key-Value 数据库,很多应用场景中,将其作为缓存使用。在 Docker Registry中也不例外,用来缓存 Docker Image 的 laryer metadata,带来的好处即是 laryer metadata 的快速访问。


  • Storage Cluster Docker Registry:以存储驱动的方式支持多种后端存储。例如:Docker Registry2.3 目前支持如下的存储驱动:


wKiom1irpA2AS2tNAADcUvuyMJw151.jpg


这里简单做个补充,官方文档也有介绍如何贡献新的 Docker Registry 存储驱动。


下面我们来看一下,在 Rancher 环境下,一个简化版 Docker Registry 的部署结构图,如下图所示: 


wKiom1irpCyCcfk2AABlBCHbfxk826.jpg


这个图是以 Rancher 下服务的视角画的,部署这样一个简单的 Docker Registry,需要四个服务,分别是外部存储服务、Redis Cache 服务、Docker Registry 服务和负载均衡服务。用户访问 Docker Registry 通过使用负载均衡服务的IP和端口。Docker Registry 的负载均衡服务,需要做源 IP会话保持配置。


到此为止,我们就在 Rancher 环境下部署了一个简化版的 Docker Registry 服务。至于我为什么说其是简化版呢?是因为现在这个版本存在一些问题。


首先,Docker Registry 本身没有 Web UI,镜像的检索,只能通过命令行工具完成,使用起来非常不方便。


其次,Docker Registry 自身没有基于角色权限访问控制,所有可以访问负载均衡服务的用户都能随意的推送和拉取镜像。


最后,Docker Registry 本身是提供了基于 token 的认证机制,需要接入 Authorization Service,这个服务官方没有实现,需要我们自己实现或者借助开源实现。


SUSE Portus 完美地解决了上述问题。下面我们看一下,在 Rancher 环境下加入 SUSE Portus的服务结构图: 

 

wKiom1irpEHyV1O6AAEUt3AJPa8308.jpg


Portus Core Cluster 服务负责给 Docker Registry 提供 token 认证服务和接收 Docker Registry 发送的镜像推送的通知,同步 Docker Registry 中的镜像信息到 SUSE Portus 的数据库中。该服务本身无状态,可以水平扩展PortusCronSync负责定时请求DockerRegistryAPI 同步镜像数据到SUSEPortus的数据库中。


当用户向 Docker Registry 推送一个镜像后,Docker Registry 会发送通知给 SUSE Portus,如果网络闪断,或者 SUSE Portu 服务中断,会做有限次数的重试。这样可能会导致 SUSE Portu 无法收到镜像推送的通知,造成两端数据的不一致。Portus Cron Sync 就是为了解决这个问题而存在的。


SUSE Portus 的 token 认证服务完全满足官方的认证模型,Docker 官方的认证模型如下图所示: 


wKiom1irpFnjsO8BAADRkPm5d80001.jpg


Docker Registry 关于认证服务的配置和通知目标服务的配置,都在 Docker Registry 容器的/etc/docker/registry/config.yml 中:


wKiom1irpHTg5_UzAABfTz-WlHU399.jpg

wKiom1irpITQJRoIAACUec9WINk023.jpg


最后,我们可以按照 Rancher Catalog 的规范,制作一些基础镜像,然后把这个服务 Catalog化,做成一键部署。 


wKioL1irpJWxdfgmAABEEaPTzuE077.jpg


本文转自 RancherLabs 51CTO博客,原文链接:http://blog.51cto.com/12462495/1899717

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
27天前
|
Ubuntu Linux Docker
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
100 27
|
18天前
|
算法 Shell 定位技术
在Docker环境下搭建openvslam/orb_slam3的步骤和问题总结
总的来说,搭建openvslam或orb_slam3的过程需要一些耐心和技术知识,但只要你遵循上述步骤,并且在遇到问题时进行适当的调试,你应该能够成功搭建并运行openvslam或orb_slam3。
57 11
|
1月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
113 28
|
1月前
|
Ubuntu 安全 Docker
Ubuntu下部署及操作Docker技巧
以上就是在Ubuntu下部署及操作Docker的具体步骤。但这只是冰山一角,Docker的魅力远不仅如此。你可以将其视为存放各种工具的小箱子,随时随地取用,极大地提升工作效率。你也可以私人订制,适应不同的开发环境,就像一个拥有各种口味冰淇淋的冰箱,满足各种各样的需求。好了,现在你已经掌握了基本的Docker运用技巧,快去尝试使用吧!记住,沉浸在探索中,你会找到无尽的乐趣和满满的收获。
102 23
|
2月前
|
安全 API 算法框架/工具
大模型文件Docker镜像化部署技术详解
大模型文件Docker镜像化部署技术详解
270 2
|
2月前
|
JSON 运维 Ubuntu
在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署
通过以上步骤,您可以成功在Docker上部署Ollama和AnythingLLM,实现本地LLM Agent的功能。在部署过程中,确保环境和配置正确,以避免不必要的问题。希望本文能够帮助您顺利完成部署,并在本地环境中高效地使用LLM模型。
800 8
|
2月前
|
Java API Docker
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
|
2月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
236 0
|
1月前
|
存储 SQL 关系型数据库
docker部署n9e开源版本7.4.0
n9e开源版本7.4.0
67 0
|
Web App开发 NoSQL 测试技术
Docker实战:更轻松、更愉快、更高效
本文讲的是Docker实战:更轻松、更愉快、更高效,【编者的话】本文作者(Michael Herman)通过实例展示了Docker在日常开发中的潜力,并不需要花费太多精力,就可以建立一套高效、简洁的流程,包括了项目自动化的测试、持续集成及部署,将开发者从这些令人厌倦的体力劳动中解放出来,同时为我们了解Docker提供了直观的经验。
2939 0