前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器镜像中心

容器镜像中心

作者头像
SRE运维实践
发布2019-07-08 14:49:07
1.3K0
发布2019-07-08 14:49:07
举报
文章被收录于专栏:SRE运维实践SRE运维实践

镜像中心

容器总是存在一个镜像中心,而一个镜像中心的存在主要是为了保存所有的镜像image,而在使用的时候,总是要追求高可用,从而会有不同的架构。

开源是为了更好的闭源,从而一般都是使用registry镜像来直接搭建镜像中心。

在使用这种架构的时候,主要就是使用分布式存储,而在使用registry的时候,在配置文件中的storage中将分布式存储的url及账号密码写入即可。而使用nginx作为前端主要是为了将80端口转换成5000端口,并且nginx可以设置主机名,从而能使用域名的方式来进行推送镜像。

在使用nginx的时候需要注意的是,一个是设置nginx的上传的最大文件的大小,因为对于有的镜像来说,几个G也是很正常的,而nginx默认有1M大小的限制,从而超过了这个大小就会报错request entiry too large;另外一个是nginx的传输有时间的限制的,默认是60s,而对于大文件来说,可能就不止了,设置10分钟试试,否则就会出现报错gateway 504 timeout。

在使用这种架构的时候,优点是可以平行扩展,当前端的处理能力不足的时候,可以多加几个机器来进行处理,但是调用的链路略长,在虚拟机中直接使用两个容器,一个容器是nginx,一个容器是registry。

分布式存储大法好。

另外一种架构就是直接使用本地存储,在两台机器上,选择两个比较大的磁盘,用来挂载镜像存储的位置,毕竟所有的镜像都是存在本地之中。

在这里的高可用主要是需要一个额外的同步进程来进行同步两台机器上的镜像,从而将镜像中心的image保持同步。

在使用registry的时候,每次进行pull的时候很简单,但是每次要删除镜像的时候就比较复杂了,当程序不断的升级,那么镜像会越来越多,虽然如果设计良好,镜像的空间增长是有限的,但是毕竟存在很多的冗余镜像,一种方法是配置文件中开启删除的功能,然后进行批量的删除,还有一种就是全量的替换挂载的目录/var/lib/registry,然后重启容器进行清空无用的image。

在进行替换的时候,总是要传输很大的空间,从而在shell里面执行是不安全的,万一断了呢,从而都是使用screen配合rsync的断点续传功能来使用,scp虽然也不错,但是断了就是断了。。。

screen常用的命令:

开启: screen -S jobname

离开:ctrl+a+d

查看:screen -l

结束:ctrl+d

rsync命令:rsync -azvp srouce destionation

在使用registry的时候,使用http协议就好了,当然你要是用https也是可以的,当直接使用docker puull 域名的时候,注意dockerd中需要加入insecure的选项,标注镜像中心的地址。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SRE运维实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档