为什么选择Docker?
容器并不是什么新鲜事物,但是实现它们总是比需要的要复杂一些。 Docker在简化容器方面取得了长足的进步,并从此引爆了整个世界。 让我们看看为什么。
为什么Docker成为家喻户晓的名字
Docker不是很老。 2014年5月,当我写了一篇煽动性博客文章Docker是Heroku Killer时 ,它即将达到1.0版本。几周后的后续行动叫做Tempering My Docker Enthusiasm 。 旁注, Heroku仍然很棒,我对Docker的热情很强。 Heroku现在也支持Docker 。
自2014年6月发布1.0版以来,Docker甚至在谷歌,微软,亚马逊,思科,惠普,IBM,RedHat,VMWare等公司的共同努力下,以Docker为核心开发了 “云”。 那是不平凡的首次亮相。
有什么大不了的?
深入研究,Docker允许将应用程序隔离到容器中,并提供有关它们生存所需的确切说明,可以轻松地在机器之间移植。 虚拟机也允许完全相同的事情,并且已经存在诸如Chef和Puppet之类的许多其他工具,以使这些配置的构建可移植且可再现。
尽管Docker与这两者相比都具有更简化的结构,但造成中断的真正领域是资源效率。
如果要运行30个Docker容器,则可以在单个虚拟机上全部运行它们。 要运行30个虚拟机,您必须引导至少具有最低可用资源要求的30个操作系统,然后再将虚拟机管理程序分解为可在基本OS上运行的虚拟机。
仅假设您要使用最少256M的VM,您将使用具有30个不同OS内核来管理资源的7.5G RAM。 使用Docker,您可以为一个VM分配大量RAM,并有一个OS来管理那些相互竞争的资源……并且您可以在基本操作系统上完成所有这些工作,而无需完全参与昂贵的虚拟机管理程序。
现在,所有这些听起来对单个计算机上的竞争资源都很好,但是一对一的比较又如何呢? Boden Russell正是这样做的: 对Docker vs KVM进行基准测试 。 Docker赢得了26比1的性能提升。
要记住的一个关键因素是,由于与Linux内核的紧密集成,Docker能够执行其操作。 它在低水平上具有显着的效率,因此,Docker不能(当前)替代Windows,OS X等虚拟机。在非Linux机器上运行Docker容器时,它们将在内部运行通过boot2docker虚拟机。
这些类型的效率提升可与亚马逊等云提供商并在每小时出售的虚拟机上将性能提高26比1的产品相提并论。 对于他们的业务而言,这是一个巨大的推动力,因为您突然就能以相同的价格做更多的事情。 无需为需要部署的每个隔离应用程序购买两个虚拟机(以实现负载平衡/可用性),您只需将三个更大的VM群集在一起,然后将所有虚拟机部署到其中,实际的处理器限制就可以了。
当企业围绕云迁移制定成本效益决策时,这会极大地推动云提供商的发展……从而产生了混乱。
Docker实现一致的环境
Docker如此具有破坏性的另一个原因是可移植性。 至此,我们主要讨论了云提供程序,但是使用了较早的示例,即需要30个容器才能运行30个虚拟机……请考虑您的开发计算机。
随着微服务在开发领域的爆炸式增长,很有可能在笔记本电脑上进行开发会涉及同时启动其中几种服务才能正常工作。 Vagrant在每个VM的基础上提供了帮助,但是如果我需要启动四个或五个不同的微服务以在本地工作,这意味着我需要在笔记本电脑上运行四个或五个虚拟机,然后再进行其他工作。 使用Docker,可以简化为更易于管理的单个VM。
复制在开发中建立的生产所面临的永恒挑战突然变成现实。 容器本身可以在与机器上的其他容器对话的许可下启动。 每个端口都可以拥有自己的单独端口,这些端口可以公开开放,甚至可以共享基本操作系统的资源。
这就是Docker在启用持续集成,交付和部署管道方面提供巨大帮助的原因。 实际情况如下:
- 您的开发团队能够在易于编写的Dockerfile中为微服务创建复杂的需求。
- 将代码推送到您的git repo。
- 让CI服务器将其拉下并构建EXACT环境,该环境将用于生产环境中以运行测试套件,而无需完全配置CI服务器。
- 完成后将其全部拆除。
- 将其部署到测试人员的暂存环境中,或仅通知测试人员,以便他们可以运行单个命令以在本地配置和启动环境。
- 放心地将您在开发,测试和过渡到生产中所拥有的一切完全滚动,而无需担心机器配置。
许多不同的单独语言已采取步骤以在其语言的泡泡内实现这种类型的工作流程。 例如,Java拥有容器化的应用程序服务器已有十多年了,但是Docker在所有基于Linux的语言中都启用了它。
那……是巨大的。
Docker不会消失
跳上“外观,新技术流行语”潮流很容易,但是Docker仍然存在。 该行业正在全力以赴地对该技术进行重大投资,并且正在Swift采用。
当像Amazon这样的公司发布自己的容器服务时, 像Tutum这样的公司利用容器的可移植性来创建一个平台,该平台使您可以在AWS,Microsoft Azure,Digital Ocean的任何云提供商上使用Docker,甚至可以在您的服务器上对其进行自定义拥有。 顺便说一下,Tutum最近刚刚被Docker收购 。
这就是Docker改变游戏规则的原因。 它解决了很多问题,这些问题阻碍了团队有效地合作,并在降低成本的同时做到了。
翻译自: https://www.javacodegeeks.com/2015/11/why-docker.html
为什么选择Docker?相关推荐
- docker 镜像选择_为什么选择Docker?
docker 镜像选择 容器并不是什么新鲜事物,但是实现它们总是比需要的要复杂一些. Docker在简化容器方面取得了长足的进步,并从此引爆了整个世界. 让我们看看为什么. 为什么Docker成为家喻 ...
- 【Git+Docker】Docker初期学习认识和安装配置详解
Docker: 特性: 1.以应用为中心 2.自动化构建 3.版本控制 4.组件重用 5.镜像共享 6.工具生态系统 具体后续学习 优势: 1.文件系统隔离 2.进程隔离 3.网络隔离 4.资源隔离和 ...
- 基于Mesos/Docker构建数据处理平台
本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得. 平台概览 2014年下半年左右,去哪儿完成了有关构建私有云服务的技术调研 ...
- 如何使用Docker轻松设置Ruby on Rails开发环境
You've likely heard about Docker terms like containers, images, services, volumes, network, Dockerfi ...
- Docker(一):基础入门篇
目录 1 Docker 简介 1.1 什么是虚拟化 1.2 什么是Docker 1.3 容器与虚拟机比较 1.4 Docker 组件 1.4.1 Docker服务器与客户端 1.4.2 Docke ...
- 面向数据科学家的 Docker 最佳实践
作者 | Thushan Ganegedara 译者 | 弯月,责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 作为一名数据科学家,每天我都要与 ...
- Docker的安装与使用
1 Docker简介 ## 1.1 什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换 ...
- 容器化技术之Docker入门
一.Docker简介 1.1 什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来 ...
- docker使用_Docker的基本使用
镜像仓库 网易云 https://c.163.com/hub#/m/home/ 阿里 https://dev.aliyun.com/search.html Docker简介 什么是虚拟化 在计算机中, ...
最新文章
- python 生成验证码
- UIButton的属性设置
- 2016-6-28 工作总结
- 4-什么是Image和container
- 《Go 语言程序设计》读书笔记(十)反射
- POJ 2135 Farm Tour (最小费用最大流)
- 北京理工大学语音识别技术.ppt
- window 平台下mysql主从的监控(window执行计划配合vb脚本)
- 古希腊神话故事1 :普罗米修斯
- PL/SQL详细的安装和配置教程(附带网盘下载链接,以及PL/SQL的基本操作与注意事项)
- 24点算法讲解与实现
- windows10系统插耳机有回声解决办法?
- SQL Server with ties 语句
- 推荐一篇好文《佛教真像大家所认为的那样消极吗?》
- 车易加加油优惠卡_造型极具未来感 一汽奔腾全新概念车正式亮相
- Java 解二元一次方程组
- 全网去水印独立版带解析接口服务器打包带前端2.3版本(美化UI)
- CentOS系统时间校对
- 创业之路——网页版面设计收藏
- fdfs启动storage失败解决办法
热门文章
- Spring思维导图,让Spring不再难懂(cache篇)
- 《此生未完成》痛句摘抄(3)
- JAVAWEB(笔记)
- 16岁应该遵循什么_成人学习一般遵循的规律
- win10打字突然变成繁体
- mybatisplus 强制制空 空覆盖原来的字符串
- 公式冒号是什么意思_三角学中,这么一堆公式其实就说了2个事而已
- basemap安装_Python画地图逃不过的basemap「完全安装手册」 | 附下载
- raid配置ssd为缓存_超融合硬件选配推荐指南 | 第三期:SSD 与 HDD
- mybatis_user_guide(2)mybatis3.4.0快速入门