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

温馨提示

对Docker容器技术或容器生产实施感兴趣的朋友欢迎加群讨论。我们汇集了Docker容器技术落地实施团队精英及业内技术派高人,在线为您分享Docker技术干货。我们的宗旨是为了大家拥有更专业的平台交流Docker实战技术,我们将定期邀请嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。

加微信群方法:

1.关注【有容云】公众号

2.留言”我要加群”

QQ群号:454565480

有容云微信二维码