Docker 是什么
Docker 是一种应用容器引擎。
什么是容器
Linux系统提供了Namespace和Cgroup技术实现环境隔离和资源控制
其中Namespace是Linux提供的一种内核级别环境隔离的方法,能使一个进程和该进程创建的子进程的运行空间都与Linux的超级父进程相隔离
注意Namespace只能实现运行空间的隔离,物理资源还是所有进程共用的
为了实现资源隔离,Linux系统提供了Cgroup技术来控制一个进程组群可使用的资源(如CPU、内存、磁盘IO等)
把这两种技术结合起来,就能构造一个用户空间独立且限定了资源的对象,这样的对象称为容器。
Linux Container是Linux系统提供的容器化技术,简称LXC,它结合 Namespace 和 Cgroup 技术为用户提供了更易用的接口来实现容器化。
LXC仅为一种轻量级的容器化技术,它仅能对部分资源进行限制,无法做到诸如网络限制、磁盘空间占用限制等。
什么是Docker
DotCloud公司结合LXC和以下列出的技术实现了Docker容器引擎,相比于LXC,Docker具备更加全面的资源控制能力,是一种应用级别的容器引擎。
• Chroot:在container里构造完整的Linux文件系统。Chroot 可以增进系统的安全性,限制使用者能做的事;
• Veth:在主机上虚拟出一张网卡与container里的eth0网卡进行桥接,实现容器与主机、容器之间的网络通信;
• UnionFS:联合文件系统,Docker利用该技术“Copy on Write”的特点实现容器的快速启动和极少的资源占用;
• Iptables/netfilter:控制container网络访问策略;
• Tc:该技术主要用来做流量隔离,限制带宽;(Tc 命令用于Linux内核的流量控制)
• Quota:该技术用来限制磁盘读写空间的大小;
• Setrlimit:该技术用来限制 container 中打开的进程数,限制打开的文件个数等
正是因为Docker依赖Linux内核的这些技术,至少使用3.8或更高版本的内核才能运行Docker容器,官方建议使用3.10以上的内核版本
Docker本质是宿主机上的一个进程,Docker通过Namespace实现资源隔离,通过Cgroup实现资源限制,
通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)
Docker与openstack:



