Docker1 之 Docker 基本概念与架构
2018-02-08 10:47
239 查看
学习内容整理笔记来自 极客学院的 docker 入门教程
操作系统虚拟化
与传统的虚拟机不同。虚拟机通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上。容器是直接运行于操作系统内核之上的用户空间。因此,容器虚拟化,也叫作操作系统虚拟化。
只能运行于相或相似内核的操作系统
依赖于 Linux 内核特性:Namespace 和 Cgroups(Control Group)的特性
容器只能运行与底层操作系统相同或相似的操作系统的,Docker 使用的容器技术就是依赖于Linux 内核特性:Namespace 和 Cgroups(Control Group)的特性,所以 Docker 只能运行于 Linux 系统而不能运行于 windows 系统(当然,现在已经可以实现了。可以查看 Docker for Windows)。
容器技术的优点:
磁盘战用空间更少
使用虚拟机部署应用不仅包含应用和其所需的库还需要完整的操作系统。原本可能只需要几十 M 的应用却需要几个G的操作系统的支撑。虚拟机,容器只需要包含应用和所依赖的库。这样资源占用大大减少。
更多的服务能力
虚拟机需要模拟硬件的行为,对内存和 CPU 的损耗相当大,所以同样配置的服务器,使用容器技术比用虚拟机能够提供更多的服务能力,服务更多的用户。
容器有如此多的优点,为啥到现在才被大家关注起来呢?一个重要的原因,容器技术的复杂性,不易安装,也不容易管理和实现自动化。Docker 的出现就是为了改变这样现状
相比传统虚拟机
职责的逻辑分离
使用 Docker ,开发人员只需要关心容器中运行的运行程序,而运维人员只需要关心如何管理容器。Docker 设计的目的就是要加强开发人员写代码的开发环境与运用程序要需要部署的生产环境的一致性。
快速高效的开发生命周
b3b4
期
Docker 的目标之一是缩短代码,从开发、测试到部署上线运行的周期,让运用程序具有可移植性。在容器中开发,以容器的形式交互和分发。这样,开发、测试和生产都使用相同的环境也就使用避免额外的调试和部署上的开销。这样就有效缩短产品上线的周期。
鼓励使用面向服务的架构
首先,
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
具体说来,Docker 在如下几个方面具有较大的优势。
更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
更高效的虚拟化
Docker 容器的运行不需要额外的
更轻松的迁移和扩展
更简单的管理
使用
Docker 本身非常轻量化、本地开发人员可以构建、运行、分享 Docker 容器。容器可以在开发环境中创建,然后在提交到测试,最终进入生产环境。
创建隔离的运行环境
在很多企业运用中,同一服务的不同版本服务于不同的用户,使用 Docker 非常容易创建不同的生产环境来运行不同的服务。
搭建测试环境
由于 Docker 的轻量化,开发者非常容易利用 Docker 在本地搭建测试环境用来测试程序在不同系统中的兼容性,甚至是搭建集群部署的测试,而学生也很容易利用 Docker 搭建学习测试的环境。
构建多用户的平台即服务(PassS) 基础设施
提供软件即服务(SaaS)应用程序
高性能、超大规模的宿主机部署
更多信息可以看这里 极客学院之 Docker
一.Docker 简介
1.什么是容器?
一种虚拟化方案操作系统虚拟化
与传统的虚拟机不同。虚拟机通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上。容器是直接运行于操作系统内核之上的用户空间。因此,容器虚拟化,也叫作操作系统虚拟化。
只能运行于相或相似内核的操作系统
依赖于 Linux 内核特性:Namespace 和 Cgroups(Control Group)的特性
容器只能运行与底层操作系统相同或相似的操作系统的,Docker 使用的容器技术就是依赖于Linux 内核特性:Namespace 和 Cgroups(Control Group)的特性,所以 Docker 只能运行于 Linux 系统而不能运行于 windows 系统(当然,现在已经可以实现了。可以查看 Docker for Windows)。
2. Linux 容器技术 vs 虚拟机
容器技术的优点:
磁盘战用空间更少
使用虚拟机部署应用不仅包含应用和其所需的库还需要完整的操作系统。原本可能只需要几十 M 的应用却需要几个G的操作系统的支撑。虚拟机,容器只需要包含应用和所依赖的库。这样资源占用大大减少。
更多的服务能力
虚拟机需要模拟硬件的行为,对内存和 CPU 的损耗相当大,所以同样配置的服务器,使用容器技术比用虚拟机能够提供更多的服务能力,服务更多的用户。
容器有如此多的优点,为啥到现在才被大家关注起来呢?一个重要的原因,容器技术的复杂性,不易安装,也不容易管理和实现自动化。Docker 的出现就是为了改变这样现状
相比传统虚拟机
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
3.什么是 Docker?
Docker 是能够将应用程序自动部署到容器的开源引擎。使用 go 语言编写(可以查看 Github 地址。于 2013 年初由dotCloud公司发布,基于 Apache 2.0 开源授权协议发布。
4. Docker 的目标
提供简单轻量的建模方式职责的逻辑分离
使用 Docker ,开发人员只需要关心容器中运行的运行程序,而运维人员只需要关心如何管理容器。Docker 设计的目的就是要加强开发人员写代码的开发环境与运用程序要需要部署的生产环境的一致性。
快速高效的开发生命周
b3b4
期
Docker 的目标之一是缩短代码,从开发、测试到部署上线运行的周期,让运用程序具有可移植性。在容器中开发,以容器的形式交互和分发。这样,开发、测试和生产都使用相同的环境也就使用避免额外的调试和部署上的开销。这样就有效缩短产品上线的周期。
鼓励使用面向服务的架构
5. Docker 的优势
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。首先,
Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
具体说来,Docker 在如下几个方面具有较大的优势。
更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
更高效的虚拟化
Docker 容器的运行不需要额外的
hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
更简单的管理
使用
Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
6. Docker 的使用场景
使用 Docker 容器开发、测试、部署服务Docker 本身非常轻量化、本地开发人员可以构建、运行、分享 Docker 容器。容器可以在开发环境中创建,然后在提交到测试,最终进入生产环境。
创建隔离的运行环境
在很多企业运用中,同一服务的不同版本服务于不同的用户,使用 Docker 非常容易创建不同的生产环境来运行不同的服务。
搭建测试环境
由于 Docker 的轻量化,开发者非常容易利用 Docker 在本地搭建测试环境用来测试程序在不同系统中的兼容性,甚至是搭建集群部署的测试,而学生也很容易利用 Docker 搭建学习测试的环境。
构建多用户的平台即服务(PassS) 基础设施
提供软件即服务(SaaS)应用程序
高性能、超大规模的宿主机部署
更多信息可以看这里 极客学院之 Docker
相关文章推荐
- Docker 3 之 Docker 基本概念与架构
- Docker 2 之 Docker 基本概念与架构
- Hbase原理、基本概念、基本架构
- Docker教程1 - 基本概念与安装
- 一起学docker(2)--基本概念
- Hbase原理、基本概念、基本架构
- Hbase原理、基本概念、基本架构
- UML基本架构建模--关联的术语和概念(三)
- Docker 学习笔记【1】Docker 相关概念,基本操作
- PAM-Linux可插拔认证模块的基本概念与架构
- docker基本概念、框架
- 大型网站架构-基本概念
- 架构的概念和最基本的三层架构-iOS企业应用架构设计
- storm教程(一):storm基本概念和集群架构
- 企业架构研究总结(2)——问题的由来和基本概念
- Docker学习记录(一)-基本概念
- HBase原理、基本概念以及架构
- docker实战(二) - 基本概念
- Java基本概念-三层架构
- Docker的基本概念