Container
容器是一种基础工具,泛指任何可以容纳其它物品的工具。
Linux Namespaces (docker容器技术主要是通过6个隔离技术来实现)
namespace | 系统调用参数 | 隔离内容 | 内核版本 |
UTS | CLONE_NEWUTS | 主机名和域名 | 2.6.19 |
IPC | CLONE_NEWIPC | 信息量、消息队列和共享内存 | 2.6.19 |
PID | CLONE_NEWPID | 进程编号 | 2.6.24 |
Network | CLONE_NEWNET |
网络设备、网络栈、端口等 |
2.6.29 |
Mount | CLONE_NEWNS | 挂载点(文件系统) | 2.4.19 |
User | COLNE_NEWUSER | 用户和用户组 | 3.8 |
Control Groups, CGroups控制组 (一般用来限制资源使用)把系统级的资源分成多个组,然后把每个组内的资源量指派或者分配到不同的用户空间进程上。
blkio:块设备IO
cpu: CPU
cpuacct: CPU资源使用报告
cpuset:多处理平台上的CPU集合
devices:设备访问
freezer:挂起或恢复任务
memory:内存用量报告
perf_event: 对从group中的任务进行统一性能测试
net_ds:cgroup中的任务创建的数据报文的类别标识符
LXC (LinuX Container) 最早实现容器技术的一个工具(容器属于linux内核中的一个技术)
当使用lxc-create 创建容器的时候,它不会激活模板去让你安装,而是连接到服务器下载匹配你穿件模板的一个镜像,从而把镜像拖到本地,并基于镜像来启动容器。把一个容器当一个用户控件使用。
docker是LXC的增强版 其实也是一个管理工具,只是docker是基于镜像来实现的,而LXC是基于模板来实现的。
编排工具
compose:单机编排
machine+ swarm +compose 集群编排
mesos+marathhon
kubernetes