容器进化史

容器技术和虚拟机,都是 资源隔离的虚拟化技术

1
2
3
4
5
6
7
8
graph LR
    A[UNIX chroot] --> B(FreeBSD Jails)
    B --> C[Linux VServer,Solaris Containers]
    C --> D[OpenVZ]
    D --> E[Google cgroups]
    E --> F[LXC]
    F --> G[Docker]
 

容器进化史

  • UNIX chroot 系统调用,将进程根目录改变到一个新位置,达到进程隔离目的

  • FreeBSD 容器技术 Jails(“监狱”,沙盒更为准确),fs、user、network、process等隔离

  • Linux 容器技术 Linux VServer,2004 Solaris Containers,资源进行划分,形成 zones,虚拟服务器

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

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

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

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

  • CoreOS 推出类似 Docker 的容器 Rocket,CoreOS 更加轻量级的 Linux

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

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

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

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

为什么要容器

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

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

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