设为首页 收藏本站
查看: 820|回复: 0

[经验分享] 你很有可能在滥用Docker

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-5-29 10:56:34 | 显示全部楼层 |阅读模式
导读Docker易伸缩,Container越来越大,各种版本的冲突不断,安装包管理器是怎么处理的,如果还在为这些头疼,还在有这些疑问,可以了解一个小工具——Nix

@Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自Rancher、携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、点融网、华为等公司的技术负责人将带来实践经验分享,4月7日之前购票只需338元,欢迎感兴趣的同学抢购。
Docker是作为一个可以容易伸缩应用的工具而开始的,一般会被用作SaaS平台的建设(Docker是dotCloud的一部分,一个提供PaaS服务的平台)。
今天Docker经常被用于分配应用程序,而不是仅仅易于扩展,如果你只是在开发环境下用Docker,只是用它来复制你的开发环境,那你很有可能没有用到Docker的易扩展性。

  糟糕的软件分配
Docker经常被用在分配应用程序上,因为现在分配应用程序是一件很糟糕的事情。先让我们看看日常我们能接触到的包管理器:yum、apt-get、npm、composer、gem、cabal等等。每一种语言的生态里都有自己的包管理器。基本上这些包管理器都做着同样的事情:解决依赖性确保应用程序可用。一般意味着要下载二进制文件,将其放在PATH,亦或者下载JavaScript源码使之可用于正在运行的环境中。
许多包管理器把安装包存在一个全局可变的目录下。例如 /usr/local/bin。现在如果说我们有应用A,依赖于Ruby 1.8.1安装在了/usr/local/bin同时在PATH下可用。假如我们现在要安装不同的应用B,其需要依赖于Ruby 2.2.1 ,因此我们得去升级Ruby。那么现在应用A因为其不能兼容新的Ruby版本就要被破坏了。即因为安装B我们不得不破坏A。换句话说就是安装包是有副作用的。这是由于全局可变的目录。

由于这些副作用你不能仅仅考虑你安装的东西了。你不得不去担忧会破坏你现有的设置。当然这其实也就是容器的可贵之处:你可随意实验同时重启容器,就像你可以只运送蛋糕,而不是配方,来避免那些副作用。这也意味着这些东西我们只要运行就能立即工作。并没有那些因为依赖产生的错误。
不好的一面就是容器体积会越来越大。意味着部署会越来越慢变成一个更慢的工具。容器通常包含着整个系统。想想看:你运行的操作系统仅仅是运行着自己的操作系统。虽然看起来不是很好,但是有副作用也不是什么好的做法。
  欢迎来到未来:Nix
Nix是一个打破全局可变目录的包管理器,引用Nix网站的一段话:
Nix的一个纯粹的功能就是确保安装或更新包的时候不破坏其它包。 这是因为它不会用较新的版本覆盖依赖关系,而导致其他地方被损坏。同时它还支持回滚,确保安装包在更新的时候不会出现不一致的情况。
让我们回顾一下刚才应用A和B的例子。Nix可以说“A只需要Ruby 1.8.1”同时“B只需要Ruby 2.2.1”。Nix可以让应用程序运行在特定的应用环境里。就像是A在他的PATH中有Ruby 1.8.1,B在他的PATH中有Ruby 2.2.1 。
在Nix的管理下安装包将不再有所谓的副作用。两个不同的Ruby可以同时运行,是因为这里有一个典型的包管理意义上的全局目录(使用nix-env,https://nixos.org/nix/manual/#sec-nix-env。但是这是用户,而不是应用程序。)。这个特有的功能将不断的往全局目录里边塞东西。但是Nix并没有添加其到PATH中。要使用的话得明确的告诉Nix,不然包还是不可用的。
因为Nix是免费的没有副作用,你不需要容器来获得可重复的构建。Nix去除包管理的缺点,从而取代了现在Docker的作用。当你可以用Nix更换整个容器时,你不需要第二次来更换操作系统与您的容器。

有一些情况,其中容器是有意义的。前面已经说了用Docker扩展软件很容易。但大多数Docker使用者不拥有这些类型的问题。他们赋予Docker一种“它只是工作”的感觉。
Docker和Nix并不互相违背。您可以使用Nix来构建你的Docker镜像。现在,你的开发人员可以运行软件,而无需使用Docker,因为他们可以得到相同的设置作为其本地机器上运行,而生产安装使用Docker,方便的缩放的容器。
  小贴士
Docker是用于伸缩的,但被滥用来分发可重复的构建。其原因是:包管理器因为这会导致副作用可变全局状态不可预测的。使用像Nix一个很好的包管理器可重复建立你的软件,你最有可能不需要Docker了。一个好的包管理器可以让你任意玩却不破坏环境,就像容器做的那样。
了解更多关于Nix在https://nixos.org/nix/about.html,你不会后悔的。
本文转载自:http://www.iyunv.com/you-are-misusing-docker/
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.iyunv.com/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482523-1-1.html 上篇帖子: 2016年六大OpenStack & Docker发展趋势预测 下篇帖子: docker(一):安装部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表