热门标签: Docker Rancher Windows Server容器 存储 容器

【群分享.1】Docker sidekick与Super container

江 松
Cloudsoar云舒网络联合创始人兼研发副总裁

编者注:以下内容根据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://www.cloudsoar.com/down/ddoc/v1.1/

百度云盘下载:
http://pan.baidu.com/s/1jHpr4pg





温馨提示:

 

云舒网络携手Rancher Labs推出【Rancher | 实战群】,在线为您分享Docker技术干货,更有往期回顾精选期刊等你拿!

 

本群汇集了Rancher中国最强技术精英团队及业内技术派高人,宗旨是为了大家拥有更专业的平台交流Rancher实战技术,实时与Rancher创始团队面对面!同时欢迎各位分享自己的经验、疑难问题,我们将定期邀请分享嘉宾做各类话题分享及回顾,共同实践研究Docker容器生态圈。

 

对Rancher和Docker技术感兴趣、或对本文中细节需继续探讨的朋友,欢迎加入本群参与讨论!

 

加群方法:

      1.关注【云舒网络】公众号

      2.留言”我要加群”

 

QQ群号:216521218








云舒网络官方微信二维码