转载

Docker Sidekick与Super Container-【Rancher | 实战群分享.1】

摘要:

容器只把一件事干好:一个主容器带一帮sidekick来提供服务,这样的效率和架构是最优的。

编者的话:

以下内容根据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://www.cloudsoar.com/about ... v1.1/

百度云盘下载:

http://pan.baidu.com/s/1jHpr4pg

________________________________________________________________________________________

温馨提示:

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

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

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

加群方法:

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

2.留言”我要加群”

QQ群号:216521218

Docker Sidekick与Super Container-【Rancher | 实战群分享.1】

原文  http://dockone.io/article/1090
正文到此结束
Loading...