简介
docker是什么?
-
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
-
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
-
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
容器: 是PAAS的一种实现,相对于虚拟机来说有更好的性能,更高的资源利用率。
linux容器技术是一种轻量级的虚拟化技术。
docker的发展历程
信息技术的飞速发展,促使人类进入云计算时代,云计算时代下孕育出众多的云计算平台。但众多的云平台之间标准规范不统一,每个云平台都有各自独立的资源管理策略、网络映射策略和内部依赖关系,导致各个平台无法做到相互兼容、相互连接。同时,应用的规模愈发庞大、逻辑愈发复杂,任何一款产品都无法顺利地从一个云平台“迁移”到另外一个云平台。
Docker利用容器技术弥合了各个云平台之间的差异,Docker通过容器来打包应用、解耦应用和运行平台。在进行迁移的时候,只需要在新的服务器上启动需要的容器即可,而所付出的成本代价是极低的。
docker的优点
- 更快的交付和部署
- 高效的资源利用和隔离
- 环境标准化和版本控制
- 更轻松的迁移和扩展
- 更简单的维护和更新管理
Docker的特性及使用场景
- Automating the packaging and deployment of applications(使应用的打包与部署自动化)
- Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)
- Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)
- Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
Docker架构
docker的三个基本概念:
镜像(Image):Docker 镜像是用于创建 Docker 容器的模板。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类:
docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker与传统虚拟机的区别
docker
Docker不同于传统的虚拟机,Docker容器是使用Docker引擎而不是管理程序来执行的。它只包含应用程序及依赖库,基于Libcontainer运行在宿主机上,因此容器比虚拟机小,并且由于主机内核的共享,可以更快地启动,具有更好的性能、更少的隔离和更好的兼容性。启动容器只需几秒即可完成。由于Docker轻量、资源占用少,使得Docker可以轻易地应用到构建标准化的应用中。
docker架构图:
传统虚拟机
传统虚拟机运行在宿主机之上,具有完整的操作系统。其自身的内存管理通过相关的虚拟设备进行支持。在虚拟机中,可为用户操作系统和虚拟机管理程序分配有效的资源,从而在单台主机上并行运行一个或多个操作系统的多个实例。每个客户操作系统都作为主机系统中的单个实体运行,但会占用较多的CPU、内存、硬盘资源。
传统虚拟机架构
docker容器技术与传统虚拟机技术的特性比较