文章目录
什么是容器
容器是一种沙盒技术,具有轻量级、可移植并且互相隔离的特点;利用容器可以把应用程序运行时所需要的环境依赖封装起来,使应用程序可以在任何地方以相同的方式运行
容器的英文名叫 Container,译为“集装箱”,这也代表了容器技术的特点。容器可以被看作是一个相对独立的运行环境,我们可将各类应用程序封装在里面,并实现资源的隔离与限制
容器与传统的虚拟机类似,但是相比较而言会更加轻量化。如下图所示。每台虚拟机(Virtual Machines)除了运行应用程序与相关的依赖库外,还包含着独立的操作系统(Guest OS),并由下层的 Hypervisor 系统进行虚拟化支持。而容器则要简单得多,那些运行在相同宿主机上的容器会共享同一个操作系统内核。由于使用了操作系统内核,在容器内部只需要封装必要的软件工具以及相关的依赖即可
Docker & 虚拟机技术比较:
- 传统虚拟机:虚拟出一个主机硬件,并且运行一个完整的操作系统
- 容器:直接运行在宿主机的操作系统之上,容器没有自己的内核,容器内的应用程序直接运行在宿主机的内核之上,多个容器共享主机内核;也不需要虚拟硬件
容器 & 虚拟机表现比较:
- 启动速度:容器启动快速,属于秒级别;虚拟机通常需要分钟时间启动
- 性能损耗:容器性能损耗更小,容器在操作系统之上进行虚拟化,与内核进行交互,性能优于通过 Hypervisor 层的虚拟化
- 系统利用率:容器更轻量,容器架构可以共用一个内核与共享应用程序库,并且只运行所需要的环境依赖,而虚拟机运行一个完整的操作系统;同样的硬件条件,容器运行的容器数比虚拟机数量更多,对系统的利用率更高
- 隔离性:容器属于进程之间的隔离,虚拟机可以实现系统级别隔离,与虚拟机相比,容器隔离性较弱
- ……
什么是 Docker
注意:Docker 属于容器技术,而容器不仅仅是 Docker,Docker 是实现容器的一种代表技术
Docker 是一个开源的应用容器引擎,是一个应用打包、分发、部署的工具,Docker 让开发者可以将应用程序以及环境打包到一个可移植的容器中,并移植或发布到任何流行的 Linux 机器上