graphdriver的架构如下:
文章插图
networkdriver的用途是完成Docker容器网络环境的配置 , 其中包括Docker启动时为Docker环境创建网桥;Docker容器创建时为其创建专属虚拟网卡设备;以及为Docker容器分配IP、端口并与宿主机做端口映射 , 设置容器防火墙策略等 。networkdriver的架构如下:
文章插图
execdriver作为Docker容器的执行驱动 , 负责创建容器运行命名空间 , 负责容器资源使用的统计与限制 , 负责容器内部进程的真正运行等 。在execdriver的实现过程中 , 原先可以使用LXC驱动调用LXC的接口 , 来操纵容器的配置以及生命周期 , 而现在execdriver默认使用native驱动 , 不依赖于LXC 。
具体体现在Daemon启动过程中加载的ExecDriverflag参数 , 该参数在配置文件已经被设为”native” 。这可以认为是Docker在1.2版本上一个很大的改变 , 或者说Docker实现跨平台的一个先兆 。execdriver架构如下:
文章插图
9、libcontainer
libcontainer是Docker架构中一个使用Go语言设计实现的库 , 设计初衷是希望该库可以不依靠任何依赖 , 直接访问内核中与容器相关的API 。
正是由于libcontainer的存在 , Docker可以直接调用libcontainer , 而最终操纵容器的namespace、cgroups、apparmor、网络设备以及防火墙规则等 。这一系列操作的完成都不需要依赖LXC或者其他包 。libcontainer架构如下:
文章插图
另外 , libcontainer提供了一整套标准的接口来满足上层对容器管理的需求 。或者说 , libcontainer屏蔽了Docker上层对容器的直接管理 。又由于libcontainer使用Go这种跨平台的语言开发实现 , 且本身又可以被上层多种不同的编程语言访问 , 因此很难说 , 未来的Docker就一定会紧紧地和Linux捆绑在一起 。而于此同时 , Microsoft在其著名云计算平台Azure中 , 也添加了对Docker的支持 , 可见Docker的开放程度与业界的火热度 。
暂不谈Docker , 由于libcontainer的功能以及其本身与系统的松耦合特性 , 很有可能会在其他以容器为原型的平台出现 , 同时也很有可能催生出云计算领域全新的项目 。
10、docker container
Docker container(Docker容器)是Docker架构中服务交付的最终体现形式 。
Docker按照用户的需求与指令 , 订制相应的Docker容器:
- 用户通过指定容器镜像 , 使得Docker容器可以自定义rootfs等文件系统;
- 用户通过指定计算资源的配额 , 使得Docker容器使用指定的计算资源;
- 用户通过配置网络及其安全策略 , 使得Docker容器拥有独立且安全的网络环境;
- 用户通过指定运行的命令 , 使得Docker容器执行指定的工作 。
文章插图
来源 :http://39sd.cn/732DD
推荐阅读
- 浅谈机油的那些事,手把手教您选择最合适的机油
- 学会这4点,你也能拥有人人羡慕的逻辑思维能力
- 普洱茶疯子杨旭,把天然健康的普洱美茶带给全世界
- 乳胶漆墙面如何去污,怎么把墙上面的乳胶漆处理下来
- 电视剧里"徒手劈脖子"一招就晕是真是假?多年的疑问终于解开了
- 杭州,茶都专家重阳茶会把脉遂昌茶产业发展
- 《茶的国度》_茶叶这把绿色的双刃剑,是如何影响大唐王朝的_
- 五分钟搞定 HTTPS 配置,手把手教
- 做人,不要把别人的善良当作傻,不要把别人的谦虚看成笨
- “工作中总有人故意找茬,怎么办?”