读前须知:本教程大部分都是【Docker 从入门到实践 】一书的知识,有兴趣可以直接观看书籍。同时,借鉴书籍的知识,如有侵权,请告知我,我会删除处理。谢谢。
一、什么是 Docker?
Docker 是由谷歌公司推出的 Go 语言开发实现,基于 Linux 的 cgroup 和 namespace 以及 AFUS 类的 Unio FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其他的进程,因此称为容器。
二、Docker 和 虚拟机的区别?
传统虚拟机是虚拟出一套硬件,在其之上运行的操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。简单讲就是各容器间共享主机系统的内核,而虚拟机则有自己的内核。
三、为什么使用 Docker?
是一种新技术,相比于传统虚拟机有很多优势。总结如下:
- 由于容器不需要硬件虚拟和完整操作系统的开销,所以能更好的利用系统资源。
- 传统的虚拟机启动一般需要数分钟,而 Docker由于直接运行在宿主内核,一般是秒级启动或者毫秒级启动。大大缩短了开发,运维,部署的时间。
- 一致的运行环境(namespace)。Docker 提供了除了内核外完整的运行环境,确保了应用运行环境一致性。
- 一次配置,到处运行。使用 Dockerfile 进行自定义需要的镜像,让镜像构建透明化,是开发运维人员更好的理解运行环境。
特性 | 容器 | 传统虚拟机 |
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于原生 |
系统支持量 | 单机支持上千个 | 一般为几十个 |