初识Docker与容器
- 什么是Docker
- 容器技术
- 为什么要使用Docker
- Docker在开发和运维中的优势
- Docker与虚拟机的比较
- Docker与虚拟化
什么是Docker
Docker是基于Go语言实现的开源容器项目。轻量级虚拟化,为应用的开发,运行和部署提供了“一站式”的实用解决方案。
在百度百科中,对Docker的描述为:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker百度百科
容器技术
IBM Developer Works网站关于容器的描述十分准确:“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时翻译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化和系统调用替换中的复杂性。”
Docker容器可以理解为一种轻量级的沙盒。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。
为什么要使用Docker
Docker在开发和运维中的优势
一次创建或配置,之后可以在任意地方,任意时间让应用正常运行。
- 更快速的交付和部署 ,开发人员使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码;
- 更高效的资源利用 ,Docker是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低;
- 更秦松的迁移和扩展 ,Docker容器几乎可以在任意的平台上运行;
- 更简单的更新管理 ,使用Dockerfile,只需要小小的配置修改,就可以代替以往大量的更新工作。
Docker与虚拟机的比较
特性 | Docker容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
Docker与虚拟化
传统方式是在硬件层面实现虚拟化,需要额外的虚拟机管理应用和虚拟机操作系统层。Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。