容器目的:资源隔离。没有主机级别隔离彻底。jail.chroot.
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间
进程是运行在用户空间的。隔离用户空间。
chroot: change root 隔离的是看上去的空间。
用户空间隔离:namespaces
UTS:主机名和域名。
Mount:挂载点(文件系统。)
IPC:进程间通信、共享内存。信号量、消息队列。
PID:进程隔离。pid为1的是init
User:用户、用户组。(内核3.8才开始支持。)
Net:网络设备、网络栈、端口等。
cpu资源:可压缩型资源。
内存资源:不可压缩资源。OOM。
LXC: LinuX Container.
docker是LXC的增强版。
docker一个容器只运行一个进程。LXC当作一个用户空间。
Control Groups(cgroups):控制组
blikio:块设备IO
cpu:cpu
cpuacct:CPU资源使用报告
cpuset:多处理器平台上的CPU集合
devices:设备访问
freezer:挂起或恢复任务。
memory:内存用量及报告。
per_event:对cgroup中的任务进行统一性能测试
net_cls: cgroup中的任务创建的数据报文的类别标识符。
组内可以有子组。
LinuX Container
简化容器使用的工具。
lxc-creat,template(模板)
容器中没有进程,容器停止。
编排工具
mschine+swarm+compose
mesos+marathon
kubernetes
容器引擎:LXC->runC
docker需要俩种技术:namespace、cgroup