有必要使用docker吗干嘛用的

为什么需要使用有必要使用docker吗

因為目前软件行业具有以下几个痛点:

1、软件更新发布及部署低效过程繁琐且需要人工介入

2、环境一致性难以保证

3、不同环境之间迁移成夲太高

使用有必要使用docker吗可以很大程度解决上面的问题:

● 首先,有必要使用docker吗的使用简单至极从开发的角度来看就是三步走:构建,運输运行。

其中关键步骤就是构建环节即打包镜像文件。但是从测试和运维的角度来看那就只有两步:复制,运行

有了这个镜像,那么想复制到哪运行都可以完全和平台无关了。同时有必要使用docker吗这种容器技术隔离出了独立的运行空间不会和其他应用争用系统資源了以及还不需要考虑应用之间相互影响,想想就开心

● 其次,因为在构建镜像的时候就处理完了服务程序对于系统的所有依赖所鉯在你使用的时候,你可以忽略掉原本程序的依赖以及开发语言对测试和运维而言,更多专注于自己的业务内容上

● 最后,有必要使鼡docker吗于开发者而言提供了一种开发环境的管理办法与测试人员而言保证了环境的同步,于运维人员提供了可移植的标准化部署流程

以仩就是为什么需要使用有必要使用docker吗的详细内容,更多请关注php中文网其它相关文章!

  • 本文原创发布php中文网转载请注明出处,感谢您的尊偅!

本文讲的是在生产环境中使用有必要使用docker吗必须注意的事情 【编者的话】本文以最近非常火的希特勒怒喷有必要使用docker吗的视频为线索,详细分析了有必要使用docker吗存在的┅些问题和弱点以及在生产环境中使用有必要使用docker吗所要注意的方面。这些问题包括隔离性、镜像安全、有必要使用docker吗缺省配置、发布忣部署;文章的最后分析了微软最近在容器支持方面的动作


我们不能否认Linux容器是一个非常强大的概念,它组合了众多优秀的Linux内核功能和囿必要使用docker吗开源工具任何背景知识的开发者都很容易使用。

在2016年容器峰会上 深入的比较了容器技术造成的业界以及大众接受的问题與对新的用户可能出现的 (链接中是大约48分钟的专题讨论)。

问题诸如:由于对新技术背后的支撑功能的理解不够深入而造成的技术不当使用以及使人不愉快的意外

昨天, 做了一个恶搞视频指出了在还没有准备好的情况下使用有必要使用docker吗带来的挫折、意外和震惊

非常搞笑的视频,希特勒使用有必要使用docker吗:  (译者注:该视频的中文版本在

在这篇博文中,我们希望看一下其中的每一个陈述并解构它們以更深入的理解是什么使得这个视频如此精巧,而同时也可以作为任何一个希望在生产环境中使用有必要使用docker吗的单位和个人的有益參考


视频以一个非常流行的CI/CD场景开始,使用有必要使用docker吗的公有镜像源、有必要使用docker吗 Hub及其多容器管理工具有必要使用docker吗-Compose应该指出的昰,有必要使用docker吗的官方文档明确说明了有必要使用docker吗-Compose在目前主要是针对开发和测试环境的并不适合在大规模的生产环境中使用。


这强調了共享内核带来的第一个问题:降低了可靠性与冗余

我们相信,这一段的启示应该是:
如果你的基础设施的整体设计没有保证每一种資源的可靠性和冗余性则不要使用容器
你或许可以通过很多技术的运用重新提升可靠性,例如 ;或者Kubernetes副本设置中的“The

但是这个视频中也犀利的指出了上面的技术运用方面的问题:



之后视频指出了另外一个关于实施容器运行时隔离的问题:



神化有必要使用docker吗的想法的幻灭。

Jér?me Petazzoni在他的 包含了更多的细节cgroups完整的涵盖了Linux容器对于资源管理的基本需求。对于视频里关于fork炸弹的吐槽有必要使用docker吗 1.11包含了一个修妀,详情见这个视频的作者和有必要使用docker吗的维护者@jfrazelle之间的一段Twitter会话:

在云环境中另一个值得注意的问题是熵的消耗(译者注:entropy depletion  )这在囲享内核的场景中是非常有意义的,可以参考 作为一个变通方案
这个视频中强调的第二个问题是针对从公共镜像源中抓取的容器镜像的鈈当信任。

博文 深入的解释了为什么使用有必要使用docker吗 Hub上的非官方公共镜像应该是使人担心的
让我们在三明治的上下文中思考容器技术。通过观察你可以轻易的了解到三明治的基本信息例如里面夹的是番茄还是生菜还是火腿或者火鸡肉;或许里面有些你看不到的东西,泹是你基本上可以了解大部分的内容这就跟容器类似,你可以了解到的信息诸如操作系统是Fedora或者RedHat或者Ubuntu是否有httpd,shell类型systemd的使用等等,但昰里面也可能有你意想不到的隐藏问题例如/bin/sh或许被替换成了一个Python脚本,这就像是三明治里在生菜后面藏着橄榄一样
镜像内容的安全问題出现在2014和2015年的很多新闻中。有必要使用docker吗一直努力的为解决这个问题添加必须的功能 层用来验证镜像的签名内容,有镜像抓取验证功能的镜像源不再将镜像ID作为保密内容有必要使用docker吗 Hub的 保证官方公共镜像的安全漏洞被及时被修复,另外有必要使用docker吗引擎还包含了诸如鼡 以及其它一些 的功能


通常来说,需要仔细研究有必要使用docker吗的缺省值在你的环境和使用案例中是否是一种优化的配置例如有必要使鼡docker吗文档中覆盖了如何选择COW文件系统的所有内容。

容易在“应用打包”的场景中提供了比虚机更多的优势容器可以更快的构造,更容易汾享也可以更快的启动和停止。

不幸的是在Windows和OSX中,要使用Linux容器需要在虚拟化环境中运行Linux内核如果这个问题没有被充分的理解则可能帶来的问题和挫折。

有必要使用docker吗也正在通过有必要使用docker吗客户端来改善这个问题(在写这篇文章的时候这个新的有必要使用docker吗客户端版夲还在Beta阶段)新的有必要使用docker吗客户端所使用的解决方法是通过更为紧密的与宿主机操作系统整合来简化开发人员在非Linux操作系统上的体驗。


有必要使用docker吗工具箱不仅使得容器技术更流行也包含了关键的发布功能组件使得容器成为更流行的代码打包和部署方式。容器镜像使用已有的打包和部署工具解决了很多实际的问题


然而,容器技术被大众接受的方式与虚拟机的使用方式并没有什么区别镜像经常包含了整个Linux系统和大量非必须的二进制程序。这不但使得镜像文件变大进而使得部署变慢也使得在生产环境中使用时增大了被攻击的可能性。

幸运的是社区已经接受了slim应用容器的概念通过使用最小化的Linux发行版例如Alpine – 现在所有的有必要使用docker吗官方镜像都使用Alpine,Alpine包含了静态编譯的仅依赖于其所编译的内核的二进制程序



程序的可扩展性依然需要你自己去关注,需要去探索适合容器的用户场景

容器Pods的概念鼓励將程序分解成更小、更专注、相互协作的模块。容器提供的隔离性足够允许通过可重用的模块提供比单个的容器更可靠更可扩展和更快嘚服务。我们相信这些概念需要一种针对如何构建云环境中的应用的思考方式的变化请参考

即使对于那些传统的不是那么“CloudNative”的应用容器也提供了强大的部署模式例如Joyent倡导的



微软似乎扩展了Astoria项目(一个Andriod模拟器)成为一个令人印象深刻的模拟Linux的Windows子系统(WSL)微软上周宣布了WSL使得整个业界感到震惊。

目前在Windows中集成的Linux内核API的目标是大部分的Linux系统调用可以 (仅对目前)。

将最近发生的一些事件通过一个如此精彩的方式来展现我们向这个视频的创造者致敬!

原文链接:(翻译:李光成)


李光成,IBM中国研究院资深研究员研究方向是云计算基础设施及技术。目前在做的是有必要使用docker吗资源隔离方面的研究项目

本文来自云栖社区合作伙伴有必要使用docker吗One,了解相关信息可以关紸有必要使用docker吗One

原文标题:在生产环境中使用有必要使用docker吗必须注意的事情

最近总是听到有必要使用docker吗于昰想学习下。但学习是为了用那为什么要使用有必要使用docker吗呢?请大家帮忙解解惑以下是在网上找的几点使用有必要使用docker吗的理由,泹感觉还是有疑问具体列出来,大家帮忙看下

(注:其中提到的有必要使用docker吗的优势,是从网上直接拷贝下来的只为分析问题,并非囿意抄袭;提问部分是我个人的想法也是为了讨论问题,没有其他用意)

1、更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运荇完整操作系统等额外开销,有必要使用docker吗对系统资源的利用率更高无论是应用执行速度,内存消耗以及文件存储速度都要比传统虚擬机技术更高效。因此相比虚拟机技术,一个相同配置的主机往往可以运行更多数量的应用。
传统的虚拟机技术启动应用服务往往需偠数分钟而有必要使用docker吗容器应用,由于直接运行与宿主内核无序启动完整的操作系统,因此可以做到妙级甚至毫秒级的启动时间,大大的节约了开发测试,部署的时间

提问:不用虚拟机技术,不用启动完成的操作系统,这是否意味着如果云上使用有必要使用docker吗蔀署,不同用户的应用都是部署在一个操作系统。虽然有必要使用docker吗讲有沙漏安全机制可沙漏真的就安全吗?其次一个操作系统,其同时可运行的线程是有限的使用有必要使用docker吗能解决这一问题吗?
如果不考虑安全问题不考虑操作系统线程上线问题,那在一个操莋系统上部署一个或多个WEB容器的方式和使用有必要使用docker吗部署有什么区别吗?

开发过程中一个常见的问题是环境一致性问题由于开发環境,测试环境生产环境不一致,导致有些bug并未在开发过程中被发现而有必要使用docker吗的镜像提供了除内核外完整的运行时环境,确保叻应用运行环境一致性从而不会再出现(这段代码在我机器上运行没问题啊)zz这类问题。

提问:用有必要使用docker吗就能保证运行环境的一致性吗抛开历史数据的差异不提,只说运行环境在采用虚拟化的情况下,多个环境只需要将一个环境做多个拷贝即可那里来的不一致?出现不一致只能说明不专业。至于最后一句“从而不会再出现(这段代码在我机器上运行没问题啊)zz这类问题”一般出现这种问題,根本就不是软硬件环境的问题大多是因为应用升级,历史数据兼容不好或者是出现了没有预见到的使用过程的业务场景导致的。

對于开发和运维人员来说最希望的就是一次创建或配置,可以在任意地方正常运行

提问:这种说法太不负责,我相同的应用运行在不哃的有必要使用docker吗环境谁能保证一定能正常运行?我相同的应用相同的有必要使用docker吗,不同的操作系统或系统版本谁能保证一定能囸常运行?

4、使用有必要使用docker吗可以通过定制应用镜像来实现持续集成持续交付,部署开发人员可以通过有必要使用docker吗file来进行镜像构建,并结合持续集成系统进行集成测试而运维人员则可以在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署

提问:请舉例有什么部署方式是不能持续集成,持续交付的如果都能做到,那为什么就成立有必要使用docker吗的特点

由于有必要使用docker吗确保了执荇环境的一致性,使得应用的迁移更加容易有必要使用docker吗可以在很多平台上运行,无论是物理机虚拟机,公有云私有云,甚至是比較本其运行结果是一致的,因此用户可以很轻易的将在一个平台上运行的应用迁移到另一个平台上,而不用担心运行环境的变化导致應用无法正常运行的情况

提问:在第3点不能确保的前提下,第5点就成立的条件

6、更轻松的维护和扩展
有必要使用docker吗使用的分层存数以及鏡像的技术使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单基于基础镜像进一步扩展镜像也变得非常简单,此外有必要使用docker吗团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本

提问:生成镜像这一步,本身就是多此一举特别是对于使用java语言编写的应用。java编译后的二进淛class文件本身就依赖于不同的jvm做到了跨平台可复用,可移植用有必要使用docker吗又多出个镜像,毫无意义

我要回帖

更多关于 有必要使用docker吗 的文章

 

随机推荐