述
如今Docker的使用已经非常普遍了,使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力,在如今微服务架构越来越流行的情况下,使用微服务+Docker的完美组合,更加方便微服务架构运维部署落地
那么,到底什么是Docker,为什么要使用Docker,它有什么优势呢?
什么是Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口
为什么要使用Docker
容器除了运行其中的应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小, 按照传统虚拟机运行的方式的话10个不同的应用就需要有10个虚拟机,而Docker只需要启动10个隔离的应用即可
Docker主要有以下几个优势:
简化环境管理
在我们开发的过程中,经常会遇到代码在开发环境中可以运行,但是一到生产环境就运行不了了,这个问题很常见,对于开发和运维来说,最希望的就是一次创建和配置就可以在任意环境下正常运行
开发者可以使用一个标准的镜像来构建一套开发环境的容器,开发完成之后,运维可以直接用这个容器去部署,这样也就不会出现换了环境代码不能用的情况了
虚拟化更加轻量级
说到容器,虚拟化,很多人总会想到虚拟机,想到VMware、VirtualBox等工具,,不同于这些虚拟技术,docker虚拟化更加轻量级
传统的虚拟机都是先虚拟出一个操作系统,然后在操作系统上完成各种各样的配置,这样并不能充分利用物理机的技能,docker是操作系统级别的虚拟技术,它运行在操作系统之上的用户空间,所有的容器都共用一个系统内核甚至公共库,容器引擎提供了进程级别的隔离,让每个容器都像运行在单独的系统之上,但是又能够共享很多底层资源.因此docker更为轻量、快速和易于管理
更轻松的迁移和扩展
Docker容器几乎可以在任意平台上运行,包括物理机,虚拟机,服务器,个人电脑等等,这种兼容性可以让用户可以把一个应用程序从一个平台直接迁移到另一个平台上
Docker和虚拟机
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比更有显著优势:
- Docker容器很快,启动停止可以在秒级别实现,这相比传统虚拟机方式要快的多
- Docker容器对系统资源需求很少,一台主机上可以同时运行数千个docker容器
- Docker通过类似Git的操作来方便用户获取,分发,和更新应用镜像,指令简明,学习成本低
- Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB | 一般为GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
虚拟机是实现了硬件上的虚拟,而Docker则是实现了操作系统级别的虚拟
Docker应用场景
- 加速本地开发
- 自动打包和部署应用
- 创建轻量,私有的PaaS环境
- 自动化测试和持续集成/部署
- 部署并扩展web应用,数据库和后端服务器
- 创建安全沙盒
- 轻量级的桌面虚拟化
Docker核心组件
docker中有三大核心组件:
镜像
镜像是一个只读的静态模板,它保存了容器需要的环境和应用的执行代码,可以将镜像看成是容器的代码,当代码运行起来之后,就成了容器,镜像和容器的关系也类似于程序和进程的关系
容器
容器是一个运行时环境,是镜像的一个运行状态,它是镜像执行的动态表现.
库
库是一个特定的用户存储镜像的目录,一个用户可以建立多个库来保存自己的镜像.