launcher
Launcher
Launcher负责fork/destroy容器
- 在容器化的上下文fork一个新的进程。子进程将使用指定参数、标志、环境变量执行指定路径的二进制。
- 子进程的I/O将根据特定的I/O描述符重定向
支持的launchers
- posix
- linux
- systemd(未来将支持)
Linux Lanucher
- 为容器创建一个"freezer"的cgroup
- 创建posix管道以在主机进程与容器进程间通信
- 使用clone系统调用生成子进程(容器进程)
- 将新的容器进程移到freezer层次中
- 在父进程写一个字符表示管理结束来通知子进程继续执行
linux_launcher
src/slave/containerizer/mesos/linux_launcher.cpp
LinuxLauncher::create
参数:
- flags:命令行参数
流程:
- 79-101:创建cgroups
- 111-117:返回新的LinuxLauncher对象
LinuxLauncher::fork
参数:
- containerId
- path
- argv
- in
- out
- err
- flags
- environment
- namespaces
- parentHooks
流程:
- 278-282:CLONE标志
- 289-298:cgroups相关动作
- 300-310:调用subprocess,见libprocess
- 返回子进程pid