Docker sidekick与Super con

 

编者注:

以下内容根据2016年2月4日凌晨【Rancher | 实战群】微信群的分享内容整理。分享人:江松,拥有超过16年的国内外企业级软件基础架构研发经验,对企业级存储,云计算都有很深的技术造诣和行业理解。对Rancher和Docker技术感兴趣、或对本文中细节需继续探讨的朋友,欢迎加入本群参与讨论! (注:【Rancher | 实战群】QQ群现已同步开通,惯用PC端办公的伙伴可加入参与相关讨论。)

 

注:本期分享由江松原创,有容云整理发布,转载请注明出处。

 

本文是我对Docker sidekick的理解,sidekick是一种容器,它做了主容器不做的杂事,可以让主容器专心的做最核心的事。

这个其实也是Docker容器非常优美好用的地方。比如说,你起了一个服务进程A容器,那么这个容器的主要工作就是服务进程A,但是还有些辅助的工作。我们可以列举一下:

 

第一. 如果服务进程A要备份数据,怎么做呢?

 

容器时代之前,那么大家就进入shell上下文直接的用rsync,或者起一个定时备份的进程来备份。容器时代不一样了,记住每个容器其实最好只干一件事,然后以服务的形式来对外服务。

最好的做法是,创建一个volume容器,服务进程A容器共享volume容器,然后另外一个备份job容器也共享这个volume容器,然后备份job容器专门来做备份。服务进程A,volume, 备份,三个容器功能清清楚楚的,相互协作,但是又各自独立。架构上非常容器理解和把握。 

 

对于服务进程A容器,其他两个容器就是sidekick。

 

同理,如果服务进程A需要处理log, 那么也可以共享volume的方式来起一个专门的log监控容器。这个容器也是sidekick.

 

第二.如果是要重启服务进程A呢?

 

也可以用一个sidekick容器来搞定。

比如服务进程A创建了一个/var/run/A.sock,然后提供命令行A-ctl restart来重启服务。CID=$(docker run -d -v /var/run Aservice) 启动A服务,拿到容器CID。然后启动一个sidekick容器来重启主容器CID的服务A。docker run --volumes-from $CID Aservice A-ctl restart

 

我的理解是:容器只把一件事干好。不要把太多东西都放到一个容器里,应该是一个主容器带一帮sidekick来提供服务,就像黑帮老大带着马仔出入,这样的效率和架构是最优的。

 

Rancher的sidekick就不太一样了。从主副容器这个角度上升到了主副服务service了。调度和scale都是采用一样的策略。具体应用案例这个谁能补充一下?

 

除了sidekick container的概念,Red Hat的一位工程师还提出了Super container的概念。在OS只是一个跑docker engine,nothing else的时代,如CoreOS, Rancher OS, Red Hat Atomic,所有的软件都是跑在容器里面的。那么如果你需要完成在主机上安装debug软件,动态加载设备等工作,这些工作也最好能打包成容器镜像来发布。

 

Super container就是这样一个能够在容器内运行主机命令的容器,可以把对主机的操作放到容器里来执行。Super container也能进入其他容器的namespace来运行命令。具体需要用到--privileged的docker run选项,然后通过nsenter进入host或者别的容器的namespace来执行命令。比如在一个Super container中执行host挂载设备的操作:

 

docker run -it --name super-container -v /:/media/host --privileged fedora   以privileged模式起一个fedora镜像(包含了nsenter软件),把整个根目录挂载在/media/host下。

 

在Super container中运行nsenter --mount=/media/host/proc/1/ns/mnt -- mount /dev/xvdf /home/mic 由于主机init进程号为1,所以nsenter进入了主机namespace来执行mount命令。如果改成其他container的进程ID,就可以进入其他container的namespace来执行命令。

Rancher中有不少容器启动都是采用了--privileged的选项,这样就能比较自如的控制host,甚至是其他container了。

以上就是我对sidekick容器和Super container容器的学习和理解,希望大家指正。

 

本文电子书下载:

云盘下载:http://pan.baidu.com/s/1jHfP9Dc

网页下载:http://www.youruncloud.com/help/115.html

博客期刊:http://www.youruncloud.com/blog/0_3.html

 

 

分享:Docker sidekick与Super con

有容云-构筑企业容器云 www.youruncloud.com

调查问卷

1、您所在的公司在IT方面面临哪些挑战? (最少选1项)

技术架构老旧过时,业务需要IT从传统架构转向互联网架构
需要管理使用多个云,避免vendor locked-in
IT资产(例如虚拟机或者物理服务器)的资源利用低,成本高昂难以承受
业务有强烈弹性需求 (比如,短期内用户访问量剧增)
使用微服务架构
开发、测试、生产环境不统一,企业内缺乏统一交付标准
运维工作复杂、自动化程度低,产品交付周期长
缺乏服务于内部其他业务部门或者第三方应用,且具备完善的计费及权限模块的PaaS平台
其他

2、您所在的公司在使用哪些私有、公有云解决方案?(最少选1项)

OpenStack
CloudStack
VMware
AWS
Azure
阿里云
金山云
腾讯云
UCloud
青云
其他

3、您是如何看待开源软件的?您所在的公司是否有使用开源软件?


没有,但有意向
没有,不接受

4、请问您所在的公司所属行业是?

传统金融、新金融
运营商
互联网
其他

5、您所在的公司在使用哪些容器管理方案?(最少选1项)

Kubernetes
Mesos
Docker Swarm
Rancher
没有

6、您所在的公司在使用容器管理方案时,认为其最需要改善的功能项是?(最少选1项)

网络管理方案
存储管理方案
易用性
完整性
没有
           

文章归档