1.什么是docker?
Docker 是基于 Go 语言实现的开源容器项目 它诞生于 2013 年年初,最初发起者是 dotCloud 公司 Docker 自开源后受到业界广泛的关注和参与,目前已有 80 多个相关开源组 件项目(包括 Containerd Moby Swarm 等),逐渐形成了围 Docker 容器的完整的生态体系。
Docker 项目已加 Linux 基金会,并遵循 Apache 协议, 全部开源代码均在 https: // github com/docker 项目仓库进行维护。
2.docker的构想
Docker 的构想是要实现“ Build Ship and Run Any App, Anywhere ”,即通过对应用的封 装( Packaging )、分发( Distribution )、部署( Deployment )、运行( Runtime )生命周期进行管 理,达到应用组件级别的“一次封装 ,到处运行” 这里的应用组件, 既可以是一个 Web 用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群 基于 Linux 台上的多项开源技术, Docker 提供了高效、敏捷和轻量级的容器方案,并 支持部署到本地环境和多种主流云平台 可以说 Docker 首次为应用的开发 、运行和部署提 供了“ 站式”的实用解决方案。
3.容器技术简介
Linux 容器( Linux Containers, LXC )技术 IBM Developer Works 网站关于容器技术的描述十分准确:“容器有效地将由单个操作系统管理的 资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资惊使用需求 与虚拟化相 比,这样既不需要指令级模拟,也不需要即时编译 容器可以在核心 CPU 本地运行指令,而 不需要任何专门的解释机制 此外,也避免了准虚拟化( para-virtualization )和系统调用替换 中的复杂性。
4.容器的优越性:
可以将 Docker 容器理解为一种轻量级的沙盒( sandbox 每个容器内 运行着 个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信 容器的创建和 停止十分快速,几乎跟创建和终止原生应用 致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。
在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离 底层物理硬件的限制;同时必须是“任何时间任何地点”可获取的 因此,开发者们需要一 种新型的创建分布式应用程序的方式,快速分发和部署,而这正是 Docker 所能够提供的最大优势.
假设用户试图基于最常见的 LAMP (Linux+Apache+MySQL+PHP )组 合来构建网站 按照传统的做法,首先需要安装 Apache MySQL PHP 以及它们各自运 行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大 量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则进行调试追踪,意 味着更多的时间代价和不可控的风险 可以想象,如果应用数目变多,事情会变得更加难以 处理 更为可怕的是, 旦需要服务器迁移(例如从亚马逊云迁移到其他云),往往需要对每个 应用都进行重新部署和调试 这些琐碎而无趣的“体力活”,极大地降低了用户的工作效率 究其根源,是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行 为一致 。而Docker 提供了一种更为聪明的方式,通过容器来打包应用、解藕应用和运行平台 这意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器 是否是同一类型的平台。
可以理解为类似于集装箱的方式,将一个个应用都打包好,无论运到哪里,都可以运行 ,对底层隔离。
5.docker的特点:
1.更快速的交付和部署
2.更高效的资源利用
3.更轻松的迁移和扩展
4.更轻松的迁移和扩展
5.更简单的更新管理
6.与传统虚拟机的比较
Docker 容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟) 要快得多;
Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个 Docker 容器(在 IBM 服务器上已经实现了同时运行! OK 量级的容器实例);
Docker 通过类似 Git 设计理念的操作来方便用户获取、分发和更新应用镜像,存储复 用,增量更新;
Docker 通过 Dockerfile 支持灵活的自动化创建和部署机制,以提高工作效率,并标准 化流程
7.安全性
Docker 容器除了运行其中的应用外,基本不消耗额外的系统资源,在保证应用性能的同 时,尽量减小系统开销 传统虚拟机方式运行 个不同的应用就要启用 个虚拟机(每个虚 拟机需要单独分配独占的内存、磁盘等资源),而 Docker 只需要启动个隔离得“很薄的” 容器,并将应用放进容器内即可 应用获得的是接近原生的运行性能 当然,在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着 Docker 不安全 Docker 利用 Linux 系统上的多种防护技术实现了严格的隔离可靠性,并且可 以整合众多安全工具 1.3.0 版本开始, Docker 重点改善了容器的安全控制和镜像的安全 机制,极大地提高了使用 Docker 的安全性。
8.docker与虚拟化
可见,虚拟化的核心是对资源的抽象,目标往往是为了在同一个主机上同时运行多个系 统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。
从大类上分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化 其中, 真正 意义上的 于硬件的虚拟化技术不 见,少数如网卡中的单根多 IO 虚拟化
基于软件的虚拟化从对象所在 层次,又可以分为应用虚拟化和平台虚拟化(通常说的 虚拟机技术即属于这个范畴) 前者 般指的是 一些模拟设备或诸如wine 这样的软件,后者 又可以细分为几个子类:
可见, Docker 以及其他容器技术都属于操作系统虚拟化这个范畴,操作系统虚拟化最大 的特点就是不需要额外的 supervisor 支持 。
Docker 虚拟化方式之所以有众多优势,跟操作系统虚拟化技术自身的设计和实现是分不开的。
如果有想入门的读者,可以跟着我,这些全是精练内容。和我一起每天20分钟,学习docker,技术交流请加QQ:1768637833