OSCON上最受欢迎的Docker演讲

本文讲的是OSCON上最受欢迎的Docker演讲【编者的话】本文介绍了上个月OSCON大会有关Docker最受欢迎的一个分享:真实线上环境的Docker技巧。分享者是一名运维工程师叫Bridget,她所在的公司DramaFever在2013年10月开始在线上环境部署使用Docker。然而那个时候,Docker官网还挂着“请勿在线上环境使用”的警示条。从2013年到现在,DramaFever积累大量Docker线上使用的实际经验。这些经验的分享,吸引了大量的与会者,当天会场爆满,组织者只好请Bridget第二天再讲了一遍。可见这个分享还是蛮有价值,这篇博文介绍的有些过于简单,有兴趣的话,可以直接去读她的演讲稿或者当天的视频。

上个月在波特兰举行的OSCON开源大会上,有关Docker和容器的分享最令人印象深刻的,一定会是Bridget Kromhout的“线上环境使用Docker,真实不炒作”。整个会场爆满,只剩下站的地方,后来者都被挤到门外面。组织者只好请Bridget第二天再讲了一遍。

毫无疑问,Docker非常非常的火,Bridget带来她对DevOps和容器化的深度经验:她是一名运维工程师,博主,演讲者,明尼阿波利斯DevOps日的组织者,也是”被捕获的DevOps“频道的主持人。

Bridget的公司,DramaFever,自2013年10月开始在线上环境使用Docker,那个时候Docker官网上还写着警示语:"不要在线上环境使用Docker"。DramaFever是一家流媒体视频公司,起初播放韩国的肥皂剧,现在给docclub.comshudder.com提供额外的视频服务。目前有来自70个内容提供商的15000集电视剧,将近2000万的观看者。高峰时刻,公司要处理来自不同的终端每秒上万次的请求--观看者会经常在节目中间切换终端设备。

为了能够满足上述需要且提供好的用户体验,DramaFever将原先单体的Python应用拆分成了微服务。整个团队在AWS上面运行服务,主网站使用Python,微服务用Go语言。DramaFever依赖Docker来提供持续的开发和部署。

在线上环境改用Docker的过程中,Bridget和她的团队学到了很多教训。下面五个主要的经验,是她在OSCON上分享的。

1.小心Docker Registry过度负载

DramaFever开始它的容器旅程之时,Docker还没有私有的Registry,但是他们对这点很不满意:Registry在Docker中成为不被控制的单点故障源。DramaFever网站当时依赖于Jenkins机器上部署的单个Registry服务器,可是,当多于20个机器需要使用时,Registry就出故障了。现在DramaFever的每台EC2机器(甚至笔记本)上都会运行着一个私有的registry容器,并辅以AWS S3作存储。这个解决方案不需要占用很多的资源,而且能解决机器扩充的瓶颈。

2.编制自己的基础镜像

为了保证Docker的镜像是最新的,DramaFever的运维团队每周都会尝试更新“基础镜像”,包括不频繁的依赖变化,比如Ubuntu包依赖或者Python的依赖文件等等。其他的部分都是基于这些镜像,所以启动会非常快。

3.避免有问题的线上推送

一定要确保没有人知道在线上环境能够执行 docker push 命令的账号和密码。我们要保证这些命令只会在Jenkins服务器触发。这样可以避免在没有其他人在场的情况下,发生有问题的线上环境推送。

4.记得清理

容器和镜像都会占用大量的硬盘空间。如果Docker源码区空间被用光,“非常非常糟糕的情况就会发生,甚至会导致硬盘的损坏”,Bridget解释道。她建议每天执行一个脚本来移除停掉且无标识的容器和镜像。

5.注意你的系统时间

AWS S3服务对你的系统时间非常在意。不幸的是,尽管boot2docker这款应用可以让Docker运行在Windows和MacOS环境,但如果你的笔记本开始休眠,这个应用将不能正常工作,因为虚拟机里的系统时钟会停滞。这时,任何AWS API请求会得到RequestTimeTooSkewed的错误。为了解决这个问题,所有DramaFever的工具都包含这行代码:
` boot2docker ssh sudo date --set \"$(env TZ=UTC date '+%F %H:%M:%S')\"

这是一个已知的问题,boot2docker正在修正。

Bridget的观点对于正在考虑线上使用Docker的人来说,非常有价值。你可以浏览一下她的演讲稿,读读她的博客文章

其中最重要的是,虽然Docker很伟大,不过也没那么神奇。容器提供了一些非常酷的且引人注目的优点,但是就如同任何新技术一样,Docker需要我们尽职研究,以确保它会正常工作,并满足特定环境的需求。

Tori Wieldt是New Relic的攻城狮激励师,她写博客,在New Relic的用户组演讲,并给New Relic开发者提供建议和培训。之前她一直在科技界,是一名系统管理员,技术作家和销售。
原文链接:5 Real-World Docker Tips From OSCON's Most Popular Session(翻译:Henry Huang)

===================================
译者介绍
Henry Huang,目前供职于趋势科技 Trend Micro(南京),负责集群运维的工作。

原文发布时间为: 2015-08-25
本文作者:henrysher
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:OSCON上最受欢迎的Docker演讲

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

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

相关文章

测试驱动开发 测试前移_测试驱动开发:它是什么,什么不是。

测试驱动开发 测试前移by Andrea Koutifaris由Andrea Koutifaris Test driven development has become popular over the last few years. Many programmers have tried this technique, failed, and concluded that TDD is not worth the effort it requires.在过去的几年中&…

【C/C++开发】C++库大全

C特殊限定符(1)--static 当static来修饰类数据成员时,这个类的所有对象都可以访问它。因为值在内存中持续存在,它可以被对象有效共享。这意味着当一个对象改变static数据成员的值时,就改变了所有对象的这个数据成员的值。 定义一个类: class …

java二维数组水平翻转,C 语言 利用二维数组实现对输入的数组进行翻转

C 语言 利用二维数组实现对输入的数组进行翻转(帮助理解对图像翻转编辑原理)/*?输入几行几列数字和翻转方式,如:3 4 0即代表3行4列,左右翻转;6 5 1即代表6行5列,上下翻转。输入示例:3 4 0________________…

lightgbm 保存模型 过大_一个例子读懂LightGBM的模型文件

机器学习模型的可解释性是个让人头痛的问题。在使用LightGBM模型的肯定对生成的GBDT的结构是好奇的,我也好奇,所以就解析一个LightGBM的模型文件看看,通过这个解析,你可以看懂GBDT的结构。另外,了解模型文件&#xff0…

Oracle Sql 胡乱记

/Oracle查询优化改写/ --1、coalesce 返回多个值中,第一个不为空的值 select coalesce(, , s) from dual; --2、order by -----dbms_random.value 生产随机数,利用随机数对查询结果进行随机排序 select * from emp order by dbms_random.value; --指定查询结果中的一…

leetcode752. 打开转盘锁(bfs)

你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位…

Object Pools 喷泉效果实现

摘录自:http://catlikecoding.com/unity/tutorials/object-pools/ 工程 效果图 工程里面有响应的注释 源码我就不单独放出来了

从头学习计算机网络_我如何通过从头开始构建网络爬虫来自动进行求职

从头学习计算机网络它是如何开始的故事 (The story of how it began) It was midnight on a Friday, my friends were out having a good time, and yet I was nailed to my computer screen typing away.星期五是午夜,我的朋友们出去玩得很开心,但我被钉…

php 动态生成文件,php动态程序生成静态文件示例

html>{title}{content}tmp.html是模板文件/** 说明:生成静态页面,tmp.html是模板文件,news.html是要生成的文件,**///1,先读取模板中内容$strfile_get_contents(tmp.html);//2,将指定的内容进行替换$title网站标题;…

网管的自我修养-网络系统

目录: 序章人际关系工具准备电脑维护网络系统弱电系统外设相关信息系统服务器相关机房建设其他网管网管,会管网络才算名副其实。管理一般中小企业的网络,具备CCNA及以上水平就可以了。 一、规划 首先要根据公司的人员工位数量、打印机传真等设…

thinkphp日志泄漏漏洞_ThinkPHP框架被爆任意代码执行漏洞

昨日ThinkPHP框架被爆出了一个php代码任意执行漏洞,黑客只需提交一段特殊的URL就可以在网站上执行恶意代码。ThinkPHP作为国内使用比较广泛的老牌PHP MVC框架,有不少创业公司或者项目都用了这个框架。不过大多数开发者和使用者并没有注意到本次漏洞的危害…

leetcode 113. 路径总和 II(Path Sum II)

目录 题目描述:示例:解法:题目描述: 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum 22&#x…

VMware下配置固定ip,于本机进行通信。

虚拟机装好后,会生成虚拟的网络信息。点开VMware下虚拟网络编辑器。选择net模式的记录会发现设定好的网关及dns。 我们只需要在虚拟机上配好对于的ip 输入 dns 和网关即可转载于:https://blog.51cto.com/thlovesky/1967929

leetcode417. 太平洋大西洋水流问题(bfs)

给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以…

为什么测试喜欢ie_为什么我现在喜欢测试,以及为什么您也应该如此。

为什么测试喜欢ieby Evelyn Chan通过伊芙琳陈 为什么我现在喜欢测试,以及为什么您也应该如此。 (Why I now appreciate testing, and why you should, too.) There’s a common misconception that writing tests slows down development speed. While the benefit…

java制作五子棋的论文,基于java的五子棋的设计与实现.docx

摘要:随着社会的不断发展,我们的科技也不断的进步,现在我们的计算机也与我们的生活息息相关,这个时候 Internet能够让我们快速的知道自己想了解的知识。根据计算机的发展过程我们发现如今计算机应用的现状还有现在的发展趋势&…

tomcat 控制台乱码 windows下

tomcat启动时控制台乱码。但是看日志又是正常编码,只是控制台是乱码。 找到 config/logging.properties java.util.logging.ConsoleHandler.encoding UTF-8 改成 java.util.logging.ConsoleHandler.encoding GBK! 转载于:https://www.cnblogs.com/wangge01/p/10786101.html…

python获取重定向url_python中检测url重定向到的地址的例子

2016年最长的假期也过了,这周连上7天班,之前还觉得挺恐怖,没想到这周真是要忙死的节凑,还真没觉得多漫长,一晃明天就周五了,干运维的就是突发的事情多,冷不丁的不知道哪里就冒出个问题&#xff…

本地模式运行spark streaming程序(win7安装nc命令通信)

2019独角兽企业重金招聘Python工程师标准>>> 首先在win7上安装nc命令 下载nc程序包,放在c盘目录下,cmd打开命令行,进入nc目录,执行:nc -l -L -p 8888开始监控。再打开一个命令行窗口进入nc目录,…

leetcode343. 整数拆分(dp)

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。 class Solution {public int integerBreak(int n) {int[] dpnew int[n1];dp[1]1;for(int…