docker 镜像选择_为什么选择Docker?

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,您可以将一个RAM分配给一个VM,并拥有一个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 镜像选择

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui templet格式化_layui使用templet格式化表格数据的方法

增加js/*---------------------格式化时间开始--------------------------*///对Date的扩展,将 Date 转化为指定格式的String//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,//年(y)可以用 1-4 个占位符,毫秒(S)只能用…

设计模式示例_代理设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

mysql insert 字符集_有关 MySQL 字符集的注意事项-爱可生

本文关键字:字符集、建库建表一、数据库和字符集1. 建库时指定创建数据库时,显式指定字符集和排序规则,同时,当切换到当前数据库后,参数 character_set_database,collation_database 分别被覆盖为当前显式指…

c#发送讯息_企业讯息

c#发送讯息本文是我们名为“ EAI的Spring集成 ”的学院课程的一部分。 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来,您将深入研究Spring Integration的基础知识,例如通道,转换器和适…

mysql触发器中case语句_一个很好的触发器例子(case when)

CREATE OR REPLACE TRIGGER TR_CGD1BEFORE UPDATE OR INSERT OR DELETE ON BB_MJ_CGD1_TBFOR EACH ROWDECLAREV_COUNT NUMBER;BEGINCASEWHEN UPDATING OR INSERTING THENIF :NEW.DJZT 结束 THEN:NEW.DJZT : 结束;ELSESELECT COUNT(*)INTO V_COUNTFROM BB_MJ_KCRKD2_TB RKD2WHE…

java cr_WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载

java cr昨天,WildFly团队发布了最新版本的WildFly 10 。 CR2很可能是预计于十月份发布最终版本之前的最后一个版本。 即使主要支持的Java EE规范是7,WildFly 8和WildFly 9也提供了许多新功能,而WildFly 9和WildFly 9现在制作了三个服务器版本…

python位置参数ppt_如何在Python中使用一个或多个相同的位置参数?

介绍..如果我们正在编写一个对两个数字执行算术运算的程序,则可以将它们定义为两个位置参数。但是由于它们是相同种类的/ python数据类型的参数,因此使用nargs选项告诉argparse您确实需要两种相同的类型可能更有意义。怎么做..1.让我们编写一个程序来减去…

java设计模式教程_Java设计模式教程

java设计模式教程课程大纲 架构和计算机科学中的设计模式是记录特定专业领域中设计问题的解决方案的正式方法。 这个想法是由建筑师Christopher Alexander在建筑领域引入的,并已被修改为包括计算机科学在内的其他各个学科。 设计模式是针对软件设计中给定上下文中常…

python剑指offer面试题_剑指Offer(Python语言)面试题38

面试题38:字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca和cba。# -*- coding:utf-8 -*-class Solution:def Permutation(se…

侬娜·杰尔_杰尔·地狱

侬娜杰尔什么是JAR地狱? (或者是classpath地狱?还是依赖地狱?)在考虑使用Maven或OSGi等现代开发工具时,哪些方面仍然有意义? 有趣的是,似乎没有对这些问题的结构化答案(…

cmake 安装mysql5.6_CMAKE安装MYSQL 5.6.10

mysql5.6.10不支持configure安装了,提供了CMAKE安装方式 #sudo groupadd mysql #sudo useradd mysql -g mysql #sudo mkdir -p /home/mysql/data #sudo mkdir /usr/local/mysql #sudo mkdir /var/log/mysql #sudo chown -R mysql:mysql /home/mysql/data #sudo cho…

java 多线程变量可见性_Java多线程:易变变量,事前关联和内存一致性

java 多线程变量可见性什么是volatile变量? volatile是Java中的关键字。 您不能将其用作变量或方法名称。 期。 我们什么时候应该使用它? 哈哈,对不起,没办法。 当我们在多线程环境中与多个线程共享变量时,通常使用v…

Mysql运行在内核空间_思考mysql内核之初级系列6—innodb文件管理 | 学步园

在上一篇里面,bingxi和alex思考了information_schema,这个一直在innodb外围打转。没有进入到innodb的内部。在后续的文章中,以innodb的为主,逐个思考。Bingxi和alex今天了解了fil文件管理。对应的文件为:D:/mysql-5.1.…

pcl_openmap_OpenMap教程第2部分–使用MapHandler构建基本地图应用程序–第1部分

pcl_openmap1.简介 在第一个教程中,我们创建了一个基本的OpenMap GIS应用程序,该应用程序在JFrame中显示一个从文件系统加载的具有一个形状图层的地图。 该教程基于com.bbn.openmap.app.example.SimpleMap 。 在该教程中,我们使用了以下OpenM…

mysql7.5安装教程_CentOS7.5下yum安装MySQL8图文教程

卸载MariaDB1.列出所有安装的MariaDB rpm 包rpm -qa | grep mariadb2.强制卸载rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64安装MySQL1. 环境CentOS7.52. 获取MySQL最新版 rpm包yum仓库下载MySQLyum localinstall https://repo.mysql.com//mysql80-community-release-e…

字符串url获取参数_如何从URL查询字符串获取示例参数或将其附加到URL查询字符串(示例)?...

字符串url获取参数让我们剖析几个简单的用例,并查看视图参数的工作原理(视图参数名称不是强制性的,以匹配通过URL查询字符串传递的请求参数,但在本文中,我们将重点讨论这种情况): 情况1 在inde…

mysql和sqlserver分页的区别_关于SQLServer和MySQL 查询分页语句区别

首先来定义几个要用到的参数(例子)t_user数据表int currentPage ; //当前页int pageRecord ; //每页显示记录数关于SqlServer数据库分页SQL语句为:String sql "select top "pageRecord " * from t_user where id not in (select top "(currentPage-1)*pag…

java 微型数据库_Java 9代码工具:使用Java微型基准测试工具的实践会话

java 微型数据库用肉眼看,基准测试似乎只是确定执行某些代码需要花费多长时间的简单问题。 但是,通常情况下,这是幼稚的方法。 提供具有准确和可重复结果的有意义的基准并非易事。 在本文中,我们将向您介绍OpenJDK代码工具项目&a…

mysql快速随机_MySQL随机取数据最高效的方法

mysql随机取数据最高效率的方法发现在SQL语句里有一个 ORDER BY rand() 这样的一个语句,这个说是用着方便,但是效率实在是太低了,于是我用了以下的方法来优化,就是用JOIN表的方法来达到这个取随机数据行的方法,你可以用…

部署被测软件应用和中间件_使用FlexDeploy对融合中间件应用程序进行自动化软件测试...

部署被测软件应用和中间件自动化软件测试是任何软件组织都必须执行的强制性活动之一,以保证其产品质量。 但是,此过程通常变得相当复杂,尤其是涉及由多个不同部分组成的现代复杂系统的自动化测试时。 所有这些部分都基于不同的技术&#xff0…