Docker是软件开发者用容器构建、运行和共享应用程序的平台。一个容器是一个运行在隔离环境中、拥有自己的文件系统上的进程;这个文件系统是使用Docker镜像构建的。镜像文件包括运行应用程序所需的一切(编译后的代码、依赖关系、库等)。
Docker是什么?
早期,因为现在物理服务器是很强大的,我们如果在一台物理服务器上只跑一个程序就浪费了,而同时跑很多程序他们又会互相影响,比如说某个程序内存泄漏从而把整个服务器的内存都占满了,其他程序都跟着受影响。所以为了让每个程序不互相干扰,让它们只使用自己那部分有限的cpu,内存和磁盘,以及自己依赖的软件包。这个早先是用虚拟机来实现隔离的,但是每个虚拟机都要装自己的操作系统核心,这是对资源是巨大的浪费。于是就有了Docker,一个机器上可以装十几个到几十个docker,他们共享操作系统核心,占用资源少,启动速度快。但又能提供了资源(cpu, 内存,磁盘等)的隔离。
Docker为什么那么快?
Docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。
小就意味着着省钱,小就意味着快。
虚拟机管理系统(Hypervisor)
利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。
Docker守护进程(Docker Daemon)
Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器
Docker与虚拟化的区别
名称 | Docker容器 | 虚拟机(VM) |
---|---|---|
操作系统 | 与宿主机共享OS, | 宿主机OS上运行宿主机OS |
存储大小 | 镜像小,便于存储与传输 | 镜像庞大(vmdk等) |
运行性能 | 几乎无额外性能损失 | 操作系统额外的cpu、内存消耗 |
移植性 | 轻便、灵活、适用于Linux | 笨重、与虚拟化技术耦合度高 |
硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |
以下是容器的一些特点:
- 灵活:即使是最复杂的应用也可以被容器化。
- 轻量级:容器共享主机内核,使其比虚拟机更高效。
- 可移植:可在本地编译并在任何地方运行。
- 松耦合:容器各自是独立封装的,允许一个容器被替换或升级而不影响、中断其他容器。
- 安全:容器采用积极的限制和隔离策略,不需要用户进行任何配置。
2022开工大吉。
「即使现在,对手也不停地翻动书页。」 --- 《哈佛图书馆二十条训言》