容器技术和虚拟机一样,也是一种资源隔离的虚拟化技术。技术雏形早已有之

容器进化史

容器概念始于 1979 UNIX chroot 系统调用,将进程根目录改变到一个新位置,达到进程隔离目的

2000 FreeBSD 容器技术 Jails(“监狱”,沙盒更为准确)包含了文件系统、用户、网络、进程等的隔离

2001 Linux 容器技术 Linux VServer,2004 Solaris Containers,两者都将资源进行划分,形成 zones,虚拟服务器

2005 OpenVZ,Linux 内核补丁提供虚拟化支持,OpenVZ 容器完整支持文件系统、用户及用户组、进程、网络、设备和 IPC 对象的隔离

2007 Google 实现 Control Groups( cgroups ),加入 Linux 内核,划时代,为后期容器的资源配额提供了技术保障

2008 基于 cgroups 和 linux namespace 推出第一个最为完善的 Linux 容器 LXC

2013 最流行和使用最广泛的容器 Docker,引入容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的 Rest API

2014 CoreOS 推出类似 Docker 的容器 Rocket,CoreOS 更加轻量级的 Linux ,安全性比 Docker 更严格

2016 微软在 Windows 提供了容器的支持,Docker 可以以原生方式运行在 Windows 上,而不是需要使用 Linux 虚拟机

这个时间节点,容器技术已经很成熟了,再往后就是容器云的发展,衍生出多种容器云的平台管理技术,kubernetes 最为出众

有这样一些细粒度的容器集群管理技术,也为微服务的发展奠定了基石

对于未来来说,应用的微服务化是一个较大的趋势

为什么要容器

货物运输问题,如何将不同的货物放在不同的运输机器上,减少因货物的不同而频繁进行货物的装载和卸载,浪费大量的人力物力

集装箱,将货物根据尺寸形状等的不同,用不同规格的集装箱装载,然后再放到运输机上运输

集装箱密封,只有货物到达目的地才需拆封,在运输过程能够在不同运输机上平滑过渡,避免了资源的浪费