容器核心技术
[TOC] 1.容器的重要特征 随着互联网和软件技术的发展,容器技术越来越为大家所熟知和使用,那么容器技术到底好在哪里呢? 主要是他有如下四个重要特征: 隔离性:基于Linux kernel提供的 namespace资源隔离方案。 安全性:资源隔离,资源访问自然受到了严格的限制,因此同时也把安全问题解决了 便捷性:相对于虚拟机技术,容器技术启动速度非常快 可配额:基于Linux 的Cgroups 即:Control Groups,可以对一个或一组资源控制和监控 docker优势 资源利用率高 启动快 运行环境一致 便于持续交付和部署 便于迁移 便于维护和扩展 docker劣势 2 Linux namespace Linux Namespace是Linux提供的一种内核级别环境隔离的方法。提供了对UTS、IPC、mount、PID、network、User等的隔离机制。 分类 系统调用参数 相关内核版本 隔离内容 Mount namespaces CLONE_NEWNS Linux 2.4.19 挂载点(文件系统) UTS namespaces CLONE_NEWUTS Linux 2.6.19 主机名与域名,影响uname(hostname, domainname) IPC namespaces CLONE_NEWIPC Linux 2.6.19 信号量、消息队列和共享内存, inter-process communication,有全局id PID namespaces CLONE_NEWPID Linux 2.6.24 进程编号 Network namespaces CLONE_NEWNET Linux 2.6.29 网络设备、网络栈、端口等等 User namespaces CLONE_NEWUSER Linux 3.8 用户和用户组 三个系统调用 调用 作用 clone() 实现线程的系统调用,用来创建一个新的进程,并可以通过设计上述参数达到隔离。 创建时传入 flags参数,可选值有 CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS, CLONE_NEWUSER, 分别对应上面六种namespace。 unshare() 使某进程脱离某个namespace setns() 把某进程加入到某个namespace 常用操作 ...