Containerizer
最后更新于:2022-04-01 21:49:24
## Containerizer
### 动机
Containerizer的作用是在容器中运行任务,包含以下几方面:
* 将任务与其他运行时任务隔离
* 容器内部任务处在一个运行时资源限制的环境
* 程序控制任务的独立资源
* 在打包的文件系统镜像运行软件,可以运行在不同的环境中
### Containerizer的类型
mesos与现有的容器技术有很好的兼容性(比如:docker), 并且提供了自己的容器技术.他还支持不同容器技术的组合(比如:docker和mesos)
Mwsos 实现了如下的一些containerizer:
* [Composing]()(组合)
* [Docker]()
* [Mesos]() (默认)
* External (已废弃)
通过设置agent参数 `--containerizers`,用户可以指定去使用哪种类型的containerizer
#### Composing containerizer
这个特性允许多种容器技术混合使用.当你使用agent参数--containerizers 配置逗号分隔的多个独立容器名称的时候,该特性被激活(如:--containerizers=mesos,docker).逗号分隔的列表的顺序很重要,因为第一个containerizer,如果支持某个任务运行的容器配置,将被用于启动该任务.
用例:
* 对于不同类型的资源隔离的测试任务。因为mesos 的 containerizers有多种资源隔离的能力,一个应用框架可以使用组合containerizer进行测试,一个任务用mesos containerizer的控制环境,与此同时只需要修改容器参数就可以使用docker容器测试另一个任务.
### Docker containerizer
Docker containerizer将任务运行在docker 容器.设置agent参数`--containerizers=docker`就可以使用这种containerizer.
用例:
* 如果任务的运行需要一些docker 中的工具包
* 如果 Mesos agent运行于docker 容器中
更多细节, 请查看 [Docker Containerizer]().
### Mesos containerizer
这种containerizer将任务运行在Mesos提供的一组插件式的隔离环境中.这是一个Mesos原生的containerizer解决方案,设置agent参数`--containerizers=mesos`就可以使用它.
用例:
* 不需要以来其他的容器技术,Mesos自己来控制任务的运行时环境
* 需要细粒度的操作系统控制(如:linux提供的cgroups/namespaces)
* 需要Mesos最新的容器技术特性
* 需要额外的资源控制,比如:其他的容器技术不能提供的磁盘使用量限制
* 需要添加自定义任务的隔离性
更多细节, 请查看 [Mesos Containerizer]().
### References
* [Containerizer Internals]() for implementation details of containerizers.
';