您的位置:首页 > 运维架构 > Docker

Docker1 之 Docker 基本概念与架构

2018-02-08 10:47 239 查看
学习内容整理笔记来自 极客学院的 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: