基础概念
容器化
容器化是一种极轻量化的虚拟化技术,主要原理是建立一个虚拟的文件系统,挂载到宿主机的内核上,以此在无性能损耗的前提下完全[1]隔离环境与权限
它的使用体验类似虚拟机,都可以把代码、库、依赖等所有内容打包放在虚拟文件系统中并随时启动,它们最大的区别是容器会与宿主机共用一个内核,而虚拟机则会启动一个完整的操作系统
因为这样的架构,它不会有性能损耗[2],在容器中启动程序的耗时也与直接运行相同,而不像虚拟机那样需要一段时间等待系统启动
因为可将环境集成在容器中、性能无损耗、启动速度快等优势,它被广泛应用于服务器和边缘
用安卓手机的同学可以尝试一个叫Termux的软件,它可以调用安卓系统内核的命令行,但不能操作其他应用,不会应用外部分的系统有任何影响。它也使用了类似于[1:1]容器的技术,与安卓系统本身共用内核,但文件系统、用户、权限等都分离
提示
前面提到过,安卓是一种非常特殊的linux,它也使用Linux Kernel
应用场景
快速创建与当前不同的系统环境,比如需要运行一个老程序时,需要一个较老的系统版本
对于需要复杂依赖的应用,将环境配置在容器中可以避免在另一台电脑上配环境的麻烦
将应用快速部署到多台设备甚至成千上万的机器上
Docker
Docker是容器化技术最常见、最流行的实现方式。虽然一定意义上docker可以说是容器化技术的代表性实现,但绝对不是唯一的
提示
你可能会在网上看到Kubernetes,即k8s
它并非容器化的实现,而是一种“容器编排”,作用是便于配置、启动、管理众多容器,底层还是需要依赖docker等容器化技术
k8s主要用于管理调度服务器集群,我们不会用到它,但类似的容器编排工具如docker compose还是有可能应用到的