首页 文章 精选 留言 我的

精选列表

搜索[开启],共10000篇文章
优秀的个人博客,低调大师

微信好物圈正式开启公测,严禁诱导分享、下载等行为

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 3月8日讯,微信好物圈正式公开测试,据官方介绍称,好物圈是微信提供的物品推荐和服务信息管理工具。 据悉,好物圈可以浏览朋友推荐的物品,并与朋友进行互动、交流心得。授权小程序同步数据后,可以在这里查看小程序里的订单和收藏,还可以将购买或收藏过的好物推荐给朋友。 除了通过订单和收藏进行推荐,用户还可以直接在小程序内将物品推荐到好物圈。小程序开发者只需在订单列表、商品详情页或其他合适的场景中添加好物圈推荐插件,便可实现一键推荐。 接入好物圈功能须仔细阅读并严格遵守《好物圈功能服务条款》和《好物圈功能运营规范》,严禁出现以下行为: 1)弄虚作假:同步虚假或违法违规的数据和信息,伪造用户行为、物品信息、订单信息等。 2)诱导行为:诱导分享,诱导关注公众号,诱导下载等。 一经发现,将立刻限制小程序接入好物圈并取消相关搜索权限,并根据违规程度对该小程序采取相应的处理措施直至封号处理。

优秀的个人博客,低调大师

代码平台Github半年发布125项更新,私库无限免费开启(附步骤)

GitHub 新 CEO Nat Friedman 于昨日在 Twitter 发文表示,自微软收购 GitHub 以来,GitHub 已经发布了超过 125 项更新。新的一年,GitHub还会再接再励,为开发者提供更好的产品。 就在刚刚到来的2019,代码平台Github 再放出官宣: New year, new GitHub: Announcing unlimited free private repos and unified Enterprise offering Github 调整了两项政策(开放程序越来越大啦!): 1、用户可免费创建无限空间私有代码库(GitHub Free) 从官宣之日起,程序员们可以免费使用 Github 私有仓库,但是每个私库最多有 3 个免费协作者,如果需要加入多名协作者,每月支付7刀~ 2、打通企业产品云仓库与本地化仓库(GitHub Enterprise) 企业可以通过 GitHub Connect 连接,打通云仓库、本地化仓库,功能更加灵活、强大有么有。 不知道怎样创建私库?两步搞定So easy! 代码平台Github的新年福利大家觉得怎么样? 如果有用请点赞支持下,送你最近更新的一套【架构设计专题资料88期合集】,由原BAT一线大厂架构师原创,耗时1年完成,2019学习就要先人一步。

优秀的个人博客,低调大师

Link Vision 打破传统视频监控模式,开启新型物联网智能视频服务

2018飞天技术汇阿里云邵斌带来题为Link Vision物联网智能视频服务的演讲,首先介绍了Link Vision第一期发布的端侧摄像头SDK的功能,并对边缘多媒体网关的功能进行了详细的讲解,同时对Link Vision Cloud的功能以及客户端SDK功能也做了详尽的介绍,最后分享了Link Vision物联网智能视频服务的解决方案。数十款阿里云产品限时折扣中,赶快点击这里,领券开始云上实践吧!直播视频回顾PPT下载请点击以下是精彩视频内容整理: Link Vision物联网智能视频服务开放平台 在2005中国视频监控市场每年总产值可达30亿人民币,至2016年产值达到867亿人民币,以平均每年30%的增长速度快速发展。在整个视频监控的细分行业中,企业级用户大约占一半以上,根据这种市场状况,阿里云将智能视频服务产品线分为两条,其中

优秀的个人博客,低调大师

新华三与山东联通联手 开启IP网络新篇章

2016年8月9日,中国联合网络通信有限公司山东省分公司(简称山东联通)与新华三集团(简称新华三)正式启动战略合作,双方将在IP网络技术与实践应用等多个层面展开密切协作,共同推动新一代网络的构建,进而快速满足客户需求,加快业务创新与信息服务升级。山东联通总经理赵玉军、新华三总裁兼首席执行官于英涛等领导出席了活动。 山东联通总经理赵玉军致辞 山东联通是山东省内主导通信运营商,致力于为省内客户提供全业务解决方案,其通信业务具有技术先进、覆盖广泛、产业链成熟等特点。作为领先的新IT解决方案供应商,新华三一直致力于IP技术与产品及解决方案的研究、开发、交付及服务。双方的深度合作,将实现资源和优势互补,为IP网络发展创造出更多新的契机。 新华三集团总裁兼CEO于英涛致辞 根据协议框架,此次战略合作将聚焦新一代IP网络建设及新技术应用落地,分为三个层面展开。双方将合作完成山东联通城域网、IP承载网、支撑网、DCN网等内部IP网络建设,并基于SDN/NFV 新一代网络技术理念和云计算服务模式,建立联合团队,在新技术标准规范、应用实践等方面开展交流,以提升网络灵活性和安全性。此外,双方还将建立联合推广团队,探索ICT领域业务合作新模式。 “作为国内领先的新IT解决方案供应商,新华三在IP基础网络建设方面有着诸多实践积累,并得到业内的高度认可。为推进山东联通与IT行业的深度融合,山东联通与新华三本着开放公平、合作共赢的原则,将在IP网络建设和ICT等领域开展深入交流与合作,进一步加速加快我省宽带通信基础网络建设,共同推动在政务、医疗、教育等领域云方案的落地,实现双方合作共赢,共同推进整个行业的繁荣发展。”山东联通总经理赵玉军表示。 山东联通副总经理韩冰与新华三集团副总裁黄智辉签署战略合作协议 此次山东联通与新华三双方本着开放公平、优势互补、互利共赢的理念,积极推动新网络的建设及新技术应用落地,在实现运营商现有网络架构的优化改造和转型升级方面已迈出重要一步。新华三总裁兼首席执行官于英涛表示,新华三将持续致力于为用户打造面向未来的SDN/NFV架构网络,推动新技术在城域网、承载网、DCN网等多种场景中的网络应用变成现实,持续引领商用化进程,助力运营商互联网化转型,拥抱新网络时代。 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

优秀的个人博客,低调大师

十年长空、历久弥新,SDCC即将盛大开启

在会议“横行”的年代,如何去做一场令开发者欢迎的大会,成为大会主办方不得不去思考的问题,在注重用户体验以及口碑营销的当下,我们这场精心打造的SDCC年度会议,将如何给用户带来最大价值和极致体验?相信这是任何会议的主办方还是参与者都会思考的话题,而浮躁喧哗的世界,更让本该纯粹的技术分享显得功利。 但又不得不谈”利”,因为有价值的产品需要物质的体现才会促进生产者生产更有价值的产品,这样看来并不矛盾,唯一需要注意的无非一个“度”。无数次扪心自问,我们该打造怎样的会议,怎样的产品才能给参会者最大的收获。今天我们就从本次大会的前世今生、内部配置等方面360度无死角为您立体解析本次CSDN的年度会议——SDCC 2016•北京站。 撇开情怀,回归初心 首先需要说明的是,我们在11月18-20日举办的SDCC中国软件开发者大会是SDCC系列会议的年度收官大戏,在此之前,我们已分别在上海举办的主题为数据库和架构实战峰会、深圳站的主题为大数据和互联网架构实战峰会、成都站主题为架构与运维实战峰会以及和杭州站主题为大数据与架构实战峰会。所到之处,受到当地开发者群众的热烈欢迎,场场爆满,热情超乎想象,让我们深感自豪但是也给了我们不小的压力。中国人讲究有始有终,我们11月主办的SDCC便是2016年SDCC系列的收官之作,错过真的就要等一年了。 SDCC上海站盛况 说到SDCC的历史,更早的要追溯到2007年,想来已有10年。翻开SDCC的历史,无数专家学者、技术大牛在此写下光辉的历史,为中国软件技术的发展做出了自己的贡献,也为众多的软件开发者留下了丰富的知识宝库,在流行讲情怀的当下,我们可以坐下来谈一天,但是这次,我们选择回归初心,让技术会议回到技术会议该有的姿态。 理由再多,不如懂你 回到刚才,作为一场技术会议,技术当然是重中之重,讲师又是核心中的核心,其他会务安排以及人员调度考验的是主办方的办会经验。SDCC即是Software Developer Conference China的简称,那么这次SDCC又会给参会者带来哪些技术分享和价值呢?下面让我为你盘点,参加本次SDCC的十大理由。 理由一:最具国际前沿的技术研究成果。本次大会非常有幸地邀请到了Erlang最初的设计者和实现者Joe Armstrong来华,出席SDCC 2016•北京站的Keynote并带来精彩的主题分享,他将带来最具国际前沿的技术研究成果。Joe Armstrong也是Erlang OTP系统项目的首席架构师,拥有瑞典皇家理工学院博士学位,是容错系统开发领域的世界级专家。Joe Armstrong最广为人知的是他发明了Erlang编程语言,并且创建了用于构建Erlang应用程序的框架——开放电信平台(Open Telecom Platform,OTP)。在现代语言的版图中,Erlang有点另类。同很多流行的语言相比,它既老又新。Erlang这们语言最牛的地方就是强大的并行处理能力和容错机制。所以,这次喜欢Erlang语言以及正在学习和利用Erlang开发的朋友,这次一定要来现场哦。 理由二:最前沿的架构思想和实践展示。就在现在,各大电商平台围绕双11激战正酣,围绕双11背后的不仅是一次平台营销实力的PK,更是一次技术的大阅兵。不管是销售数字,还是用户体验,这次全民购物狂潮再次刷新了过去的所有记录将毫无疑问,而在这一切背后,稳定高效的系统架构设计将扮演关键角色。有鉴于此,我们SDCC大会特别设置了四大架构专场,分别是电商架构专题、高可用架构专题、架构师进阶之路专题、架构演进专题,来自阿里巴巴、京东、百度、唯品会、58赶集网、1药网、猪八戒网等等公司的技术专家,全程为您解析国际电商、创业电商、传统电商、大型电商等架构实践。双11过后,正好我们可以收拾下心情,到我们架构专场来听这些顶级电商公司在双11技术大战中的“实兵对抗”。 理由三:最具技术实力的讲师阵容。正如本文开头所说,如果说SDCC是一幅胶卷,缓缓打开,呈现出来的就是一幅幅精彩动人的瞬间,无数讲师在此留下最为耀眼的时刻。从2007年至今,跨越10年,底蕴长存,历久弥新。秉承干货精神,本次大会我们有幸邀请到国内相关领域最具技术实力的100+讲师同台献计,共同把脉中国软件开发大势。不仅邀请了国内一线互联网公司的技术大牛,亦有久未露面的骨灰级老司机,更有年少成名的青年才俊,有的久居一线,有的跃升Leader,但是最重要的是他们久经沙场,深谙技术的真谛。 理由四:最精炼丰富的议题设置。我们通过观察国内2016年的技术趋势以及技术热点,精心策划了12场技术专题,紧跟国际技术潮流,技术和实践话题轮番上演,包括电商架构专题、架构演进专题、高可用架构专题、架构师进阶之路专题、微信开发专题、前端开发专题、编程语言专题、自动化运维和容器专题、移动视频技术专题、基于Spark的大数据系统设计专题、高吞吐数据库系统设计要领专题、个性化推荐专题、研发管理与团队建设专题等。讲师议题内容也极具多样化,满足了大部分参会者的需求,涵盖了:互联网应用架构、编程语言、大数据、研发管理、前端开发、微信开发、人工智能、运维与容器、直播技术等方面,可为技术从业者、技术总监、架构师、CTO等带来最为丰富的知识和最具价值的技术交流平台。 理由五:最前线的技术实践案例。SDCC每一期的嘉宾都来自一线的互联网公司,这些老司机来自的公司有阿里、腾讯、百度、华为、蚂蚁金服、京东、奇虎360、苏宁云商、携程、小米、滴滴出行、美团点评、1号店、聚美优品、当当网、平安科技、饿了么、YY、唯品会、蘑菇街、AdMaster、游族、有赞、Echo、ThoughtWorks、nice、中国电信、亚信、阅文集团、优维科技、出门问问、云霁科技、UCloud、七牛云等,这些讲师在SDCC的历史上留下了浓墨重彩的一笔。这次SDCC年度大戏除了上述的一些公司之外,我们邀请到更多公司和领域的顶级技术大牛到我们大会现场,和参会者做深入的交流,在此不一一列举,详情点击这里。 理由六:最有深度的案例展示平台。SDCC2016将聚焦技术创新与应用实践,荟萃国内外一线的软件技术和架构专家。这里将聚集来自一线接地气的干货和最有深度的案例展示、引人深思、发人深省,例如来自莫晓东 微信支付高级DBA莫晓东带来的《微信红包数据库架构演变》、百度的颜世光带来的《百度万亿量级数据库的构建与应用》、京东容王兴刚带来的《京东大促:大规模容器背后的挑战和实践》、有让人大开眼界的思想、扎实的产品、炫酷的技术,一般场合很难听到的技术内幕、选型建议和用户心声,以及难得的高密度面对面交流机会。 理由七:最有前瞻性的技术开发专题。当下要说最火的应用开发非微信开发不可,随着小程序的推出,微信更是以迅猛势头火速发展,并已跨入海外市场,服务着全球亿万用户。作为技术开发者,除了时刻关注领域技术发展外,更应紧盯、深挖掘该行业所蕴藏的巨大商机。2014年北京和深圳两场微信开发者大会、2015 SDCC微信开发专题论坛,吸引了众多领域技术专家参与分享,受到了广大微信开发者的一致好评。2016年,SDCC微信开发论坛将持续精彩,携手更多技术高手、创业精英,共研技术难点,碰撞创新点子。当然,靠谱的专题,并不止微信应用专题,还有基于Spark的大数据系统设计、前端开发、个性化推荐、高吞吐数据库设计要领专题都极具看点。 理由八:最具价值的线下技术交流平台。SDCC将吸引1000+的高质量参会人员,而据往年CSDN主办的会议数据统计来看,不少参会者的级别和技术实力完全达到了演讲水准,甚至很多大型传统行业和互联网公司的技术骨干会组团参会。而这些来自一线的工程师、技术高手们都将在大会现场“过招”,台上台下深入探讨,给参会的朋友们带来更多惊喜! 理由九:顶级技术团队,分享运维和容器实践。2014年以来,运维和容器技术开始风靡技术圈,以Docker为代表的容器技术给运维和架构带来了前所未有的改变,如何利用Docker改进自己的业务架构,如何在生产环境部署Docker,是否有一些极具价值的参考案例成为一线容器技术开发者们非常关心的话题。本次大会,我们从容器云、容器编排、自动化运维以及微服务等多角度出来,邀请腾讯游戏运维团队、京东容器团队、华为容器团队、普元SOA技术团队、IBM容器团队、VMware云原生团队、微影时代技术团队、FIT2CLOUD技术团队、亚信大数据云平台团队、优维科技团队等公司技术团队的骨干和Leader,他们将从自己的实践角度探讨自动化运维和容器的实践。 理由十:紧跟热点技术,移动视频直播技术全景展现。不知道为什么,今年以来移动直播一下子就火了起来,一迅雷不及掩耳之势席卷而来,直播技术已经深入到我们生活的方方面面,比如体育直播、购物直播、体育直播、教育直播等等,利用直播也成为当下最时髦的姿势之一。当然,这背后也为直播技术平台的发展起到了强大的推动作用,从技术层面,直播技术也是众多业内开发者们备受关注的领域之一。在移动直播技术专场,我们也邀请到多位直播技术专家深度阐述直播连麦技术;在热门时段大主播高峰值情景下,如何优化直播礼物系统?面对延迟、卡顿等诸多难题,全互动直播技术的最佳解决方案;基于第三方CDN,我们该如何实现直播质量监控。更多精彩的直播技术,尽在本专题。 除此之外,还有最强大的讲师后援团。一届完美的大会离不开多方的支持,这次我们SDCC一如既往的得到了众多业界大牛的鼎力支持,包括来自各行各业、五湖四海的12位出品人,他们的支持和关心非常关键,让我们在前行的道路上更加平稳,他们有的是CSDN的老朋友,有的是CSDN的老粉丝、老读者,正是他们的大力支持才让我们的大会更具水准、从而精彩纷呈。 如果重视技术人才和工程师在这个时代的意义,如果期待技术实践能带来一日千里的发展,如果决心塑造新的企业关键竞争力,那就不要错过SDCC2016大会,理由再多,不如有你,因为有你,SDCC才会更精彩! 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

优秀的个人博客,低调大师

数据中心能耗问题待解 边缘计算或开启新蓝海

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 近两年,物联网、人工智能、5G等新技术的不断涌现和发展,一直推动着数据中心的新一轮变革。而关于数据中心的能耗问题,是当前业内亟待解决的难题。不过随着技术的成熟发展,2018年我们或将成为边缘数据中心的发展年。 2月28日,兴业银行数据中心获得中国电子工业标准化技术协会信息技术服务分会颁发的国家标准《信息技术服务 数据中心服务能力成熟度模型》(GB/T33136-2016)优秀级认证证书。 据悉,数据中心服务能力成熟度模型是我国***对数据中心服务能力成熟度进行评价的国家标准,标志其运营服务能力得到国标认可,达到国内领先水准。 事实上,在近两年,随着云计算技术的深入发展,上“云”已成为企业发展常态。而物联网、人工智能、5G等新技术的不断涌现和发展,一直推动着数据中心的新一轮变革。 在数据中心领域,许多人通常将"可用性"和"可靠性"当作同一事物。但对于数据中心而言,虽然拥有可靠性高的设备可以减少系统故障的机会,但不能确保更高的可用性。很多企业的管理层认为云计算是一种"***"解决方案,因为它将会消除与数据中心以及IT硬件相关的所有资本和运营成本以及人员成本。 除此之外,数据中心的耗能问题愈发受到重视。目前,许多组织将其运行在小型服务器机房的业务迁移到托管云解决方案,而企业、多租户、超大规模厂商,以及高性能计算数据中心现在占据了***的增长份额和能源消耗。 如果你无法理解这是何等庞大的能源消耗,那就换句话来说,数据中心平均消耗的功率是大型商业写字楼的100倍以上,一个大型数据中心使用相当于一个美国小城市的总电量。这样来看,数据中心的能耗的确已经达到了惊人的数字。数据中心能耗问题,是当前业内亟待解决的难题。 在此情境下,不少用户更加看好云计算,数据中心面临巨大挑战。对此,IT专家建议,数据中心技术人员应该灵活掌握工作角色并接受培训,他们应该寻找方法来提高他们的云计算技能。 不过话说回来,数据中心虽然能耗大,但也有其可靠的一面,这也是为何仍有部分资本看好数据中心的原因。 可以说,数据中心天然就是一个海量数据库,每天生成的和转发的数据都在呈指数增长,有了这些数据,再利用大数据技术去分析,就能得到很多有意义的数据。而当下的AI技术也正在帮助数据中心提升运营效率,构建智能数据中心。 随着数据中心的深度发展,有人说,2018年是边缘数据中心的一年。 按照IDC的统计数据,到2020年将拥有超过500亿的终端与设备联网,未来超过50%的数据需要在网络边缘侧分析、处理和储存,边缘计算所面对的市场规模非常巨大。 更重要的是,边缘数据中心分散的设置允许组织和团队更好地解决和管理他们的数字业务基础设施。数据的数量和速度将会增长到相当高的水平,从云端流出的数据将变得越来越低效。另外,边缘计算还有一些令人难以置信的用例和很多的潜力等待我们去挖掘。由此来看,边缘数据中心的兴起并非只是传言。

优秀的个人博客,低调大师

开启市场新格局 且看新华三计算与存储新品发布会

全球领先的新IT解决方案领导者新华三将于8月31日在北京钓鱼台国宾馆举办“新IT 新动能 新格局 新华三下一代计算与存储发布会”,重磅发布服务器和存储的全线新品。 2017年初,新华三集团正式推出了“应用驱动 云领未来”的新IT战略。在这一战略指引下,新华三IT产品线也进一步明确了发展的目标,就是帮助客户简化混合IT环境下的基础架构服务,通过高效、敏捷、安全等技术特性,让IT系统发挥更大的生产力,成为新经济发展的核心动能。 对于新华三来说,本次新产品发布会不仅是“应用驱动”战略下创新成果的集中展示,更是在计算与存储领域实力的一次“检阅”,对于整个IT产品市场的格局演变有着重大影响。 我们知道,新华三实际上拥有业内最全的服务器与存储产品线,旗下的服务器与存储产品不仅可以满足金融、电信、商业企业等众多领域需求,还可在教育、政府、公共安全等细分市场为中国客户提供更多样化、更灵活和更具针对性的产品和解决方案。 更重要的是,随着数字化转型成为全球趋势,越来越多的用户需要选择合适的混合基础架构,来应对数字化转型趋势下业务需求的复杂性。混合IT架构转型的加剧,使得用户需要IT基础设施能够提供更为高效、敏捷、安全的计算新格局;持续演进的关键业务新动能;以及闪存、海量特性的数据中心等基础架构服务交付能力。而这些,正是新华三即将推出的IT新产品所具有的关键特性。 新华三的服务器与存储新品将为企业提供怎样的全方位产品与服务支持?未来的新华三又会在IT基础架构领域打开一片怎样的“新天地”?让我们在8月31日的“新IT 新动能 新格局”下一代计算与存储发布会上,来一一寻找答案。 本文出处:畅享网 本文来自云栖社区合作伙伴畅享网,了解相关信息可以关注vsharing.com网站。

优秀的个人博客,低调大师

开启万物互联的钥匙:双模物联网技术深度解析

物联网是当下最炙手可热的科技概念之一。所谓物联网,本质上是互联网技术的进一步延伸。传统的互联网中,连接的设备主要是PC、手机、平板等个人终端,相当于以“人”为连接对象;随着技术的发展,未来的物联网将会连接生产生活中涉及到的几乎一切设备,也就是将“万物”作为连接对象。从连接人与人到连接人与物、物与物,这将是互联网的一场影响深远的革命。 既然物联网的目标是连接万物,物联网必然要在现有的互联网,尤其是移动互联网基础上进行建设,这样才能具备广泛的覆盖能力和良好的兼容性。因此,物联网技术从诞生伊始,就与移动互联网技术是共生共进的关系。在美国高通公司等行业领导者制定移动互联网的升级标准——千兆级LTE的相关规范时,特别加入了对物联网的相关支持,并同时制订了物联网的两大标准:Cat-NB1和Cat-M1。基于这两大标准,物联网的建设就有了坚实的基

优秀的个人博客,低调大师

通过 Docker 化一个博客网站来开启我们的 Docker 之旅

这篇文章包含 Docker 的基本概念,以及如何通过创建一个定制的 Dockerfile 来Docker 化Dockerize一个应用。 Docker 是一个过去两年来从某个 idea 中孕育而生的有趣技术,公司组织们用它在世界上每个角落来部署应用。在今天的文章中,我将讲述如何通过“Docker 化Dockerize”一个现有的应用,来开始我们的 Docker 之旅。这里提到的应用指的就是这个博客! 什么是 Docker? 当我们开始学习 Docker 基本概念时,让我们先去搞清楚什么是 Docker 以及它为什么这么流行。Docker 是一个操作系统容器管理工具,它通过将应用打包在操作系统容器中,来方便我们管理和部署应用。 容器 vs. 虚拟机 容器和虚拟机并不完全相似,它是另外一种提供操作系统虚拟化的方式。它和标准的虚拟机还是有所不同。 标准的虚拟机一般会包括一个完整的操作系统、操作系统软件包、最后还有一至两个应用。这都得益于为虚拟机提供硬件虚拟化的管理程序。这样一来,一个单一的服务器就可以将许多独立的操作系统作为虚拟客户机运行了。 容器和虚拟机很相似,它们都支持在单一的服务器上运行多个操作环境,只是,在容器中,这些环境并不是一个个完整的操作系统。容器一般只包含必要的操作系统软件包和一些应用。它们通常不会包含一个完整的操作系统或者硬件的虚拟化。这也意味着容器比传统的虚拟机开销更少。 容器和虚拟机常被误认为是两种对立的技术。虚拟机采用一个物理服务器来提供全功能的操作环境,该环境会和其余虚拟机一起共享这些物理资源。容器一般用来隔离一个单一主机上运行的应用进程,以保证隔离后的进程之间不能相互影响。事实上,容器和BSD Jails以及chroot进程的相似度,超过了和完整虚拟机的相似度。 Docker 在容器之上提供了什么 Docker 本身不是一个容器运行环境,事实上,只是一个与具体实现无关的容器技术,Docker 正在努力支持Solaris Zones和BSD Jails。Docker 提供了一种管理、打包和部署容器的方式。虽然一定程度上,虚拟机多多少少拥有这些类似的功能,但虚拟机并没有完整拥有绝大多数的容器功能,即使拥有,这些功能用起来都并没有 Docker 来的方便或那么完整。 现在,我们应该知道 Docker 是什么了,然后,我们将从安装 Docker,并部署一个公开的预构建好的容器开始,学习 Docker 是如何工作的。 从安装开始 默认情况下,Docker 并不会自动被安装在您的计算机中,所以,第一步就是安装 Docker 软件包;我们的教学机器系统是 Ubuntu 14.0.4,所以,我们将使用 Apt 软件包管理器,来执行安装操作。 # apt-get install docker.io Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: aufs-tools cgroup-lite git git-man liberror-perl Suggested packages: btrfs-tools debootstrap lxc rinse git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-bzr git-cvs git-mediawiki git-svn The following NEW packages will be installed: aufs-tools cgroup-lite docker.io git git-man liberror-perl 0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. Need to get 7,553 kB of archives. After this operation, 46.6 MB of additional disk space will be used. Do you want to continue? [Y/n] y 为了检查当前是否有容器运行,我们可以执行docker命令,加上ps选项 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES docker命令中的ps功能类似于 Linux 的ps命令。它将显示可找到的 Docker 容器及其状态。由于我们并没有启动任何 Docker 容器,所以命令没有显示任何正在运行的容器。 部署一个预构建好的 nginx Docker 容器 我比较喜欢的 Docker 特性之一就是 Docker 部署预先构建好的容器的方式,就像yum和apt-get部署包一样。为了更好地解释,我们来部署一个运行着 nginx web 服务器的预构建容器。我们可以继续使用docker命令,这次选择run选项。 # docker run -d nginx Unable to find image 'nginx' locally Pulling repository nginx 5c82215b03d1: Download complete e2a4fb18da48: Download complete 58016a5acc80: Download complete 657abfa43d82: Download complete dcb2fe003d16: Download complete c79a417d7c6f: Download complete abb90243122c: Download complete d6137c9e2964: Download complete 85e566ddc7ef: Download complete 69f100eb42b5: Download complete cd720b803060: Download complete 7cc81e9a118a: Download complete docker命令的run选项,用来通知 Docker 去寻找一个指定的 Docker 镜像,然后启动运行着该镜像的容器。默认情况下,Docker 容器运行在前台,这意味着当你运行docker run命令的时候,你的 shell 会被绑定到容器的控制台以及运行在容器中的进程。为了能在后台运行该 Docker 容器,我们使用了-d(detach)标志。 再次运行docker ps命令,可以看到 nginx 容器正在运行。 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6d31ab01fc9 nginx:latest nginx -g 'daemon off 4 seconds ago Up 3 seconds 443/tcp, 80/tcp desperate_lalande 从上面的输出信息中,我们可以看到正在运行的名为desperate_lalande的容器,它是由nginx:latest image(LCTT 译注: nginx 最新版本的镜像)构建而来得。 Docker 镜像 镜像是 Docker 的核心特征之一,类似于虚拟机镜像。和虚拟机镜像一样,Docker 镜像是一个被保存并打包的容器。当然,Docker 不只是创建镜像,它还可以通过 Docker 仓库发布这些镜像,Docker 仓库和软件包仓库的概念差不多,它让 Docker 能够模仿yum部署软件包的方式来部署镜像。为了更好地理解这是怎么工作的,我们来回顾docker run执行后的输出。 # docker run -d nginx Unable to find image 'nginx' locally 我们可以看到第一条信息是,Docker 不能在本地找到名叫 nginx 的镜像。这是因为当我们执行docker run命令时,告诉 Docker 运行一个基于 nginx 镜像的容器。既然 Docker 要启动一个基于特定镜像的容器,那么 Docker 首先需要找到那个指定镜像。在检查远程仓库之前,Docker 首先检查本地是否存在指定名称的本地镜像。 因为系统是崭新的,不存在 nginx 镜像,Docker 将选择从 Docker 仓库下载之。 Pulling repository nginx 5c82215b03d1: Download complete e2a4fb18da48: Download complete 58016a5acc80: Download complete 657abfa43d82: Download complete dcb2fe003d16: Download complete c79a417d7c6f: Download complete abb90243122c: Download complete d6137c9e2964: Download complete 85e566ddc7ef: Download complete 69f100eb42b5: Download complete cd720b803060: Download complete 7cc81e9a118a: Download complete 这就是第二部分输出信息显示给我们的内容。默认情况下,Docker 会使用Docker Hub仓库,该仓库由 Docker 公司维护。 和 Github 一样,在 Docker Hub 创建公共仓库是免费的,私人仓库就需要缴纳费用了。当然,部署你自己的 Docker 仓库也是可以的,事实上只需要简单地运行docker run registry命令就行了。但在这篇文章中,我们的重点将不是讲解如何部署一个定制的注册服务。 关闭并移除容器 在我们继续构建定制容器之前,我们先清理一下 Docker 环境,我们将关闭先前的容器,并移除它。 我们利用docker命令和run选项运行一个容器,所以,为了停止同一个容器,我们简单地在执行docker命令时,使用kill选项,并指定容器名。 # docker kill desperate_lalande desperate_lalande 当我们再次执行docker ps,就不再有容器运行了 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 但是,此时,我们这是停止了容器;虽然它不再运行,但仍然存在。默认情况下,docker ps只会显示正在运行的容器,如果我们附加-a(all) 标识,它会显示所有运行和未运行的容器。 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6d31ab01fc9 5c82215b03d1 nginx -g 'daemon off 4 weeks ago Exited (-1) About a minute ago desperate_lalande 为了能完整地移除容器,我们在用docker命令时,附加rm选项。 # docker rm desperate_lalande desperate_lalande 虽然容器被移除了;但是我们仍拥有可用的nginx镜像(LCTT 译注:镜像缓存)。如果我们重新运行docker run -d nginx,Docker 就无需再次拉取 nginx 镜像即可启动容器。这是因为我们本地系统中已经保存了一个副本。 为了列出系统中所有的本地镜像,我们运行docker命令,附加images选项。 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx latest 9fab4090484a 5 days ago 132.8 MB 构建我们自己的镜像 截至目前,我们已经使用了一些基础的 Docker 命令来启动、停止和移除一个预构建好的普通镜像。为了“Docker 化(Dockerize)”这篇博客,我们需要构建我们自己的镜像,也就是创建一个Dockerfile。 在大多数虚拟机环境中,如果你想创建一个机器镜像,首先,你需要建立一个新的虚拟机、安装操作系统、安装应用,最后将其转换为一个模板或者镜像。但在 Docker 中,所有这些步骤都可以通过 Dockerfile 实现全自动。Dockerfile 是向 Docker 提供构建指令去构建定制镜像的方式。在这一章节,我们将编写能用来部署这个博客的定制 Dockerfile。 理解应用 我们开始构建 Dockerfile 之前,第一步要搞明白,我们需要哪些东西来部署这个博客。 这个博客本质上是由一个静态站点生成器生成的静态 HTML 页面,这个生成器是我编写的,名为hamerkop。这个生成器很简单,它所做的就是生成该博客站点。所有的代码和源文件都被我放在了一个公共的Github 仓库。为了部署这篇博客,我们要先从 Github 仓库把这些内容拉取下来,然后安装Python和一些Python模块,最后执行hamerkop应用。我们还需要安装nginx,来运行生成后的内容。 截止目前,这些还是一个简单的 Dockerfile,但它却给我们展示了相当多的Dockerfile 语法)。我们需要克隆 Github 仓库,然后使用你最喜欢的编辑器编写 Dockerfile,我选择vi。 # git clone https://github.com/madflojo/blog.git Cloning into 'blog'... remote: Counting objects: 622, done. remote: Total 622 (delta 0), reused 0 (delta 0), pack-reused 622 Receiving objects: 100% (622/622), 14.80 MiB | 1.06 MiB/s, done. Resolving deltas: 100% (242/242), done. Checking connectivity... done. # cd blog/ # vi Dockerfile FROM - 继承一个 Docker 镜像 第一条 Dockerfile 指令是FROM指令。这将指定一个现存的镜像作为我们的基础镜像。这也从根本上给我们提供了继承其他 Docker 镜像的途径。在本例中,我们还是从刚刚我们使用的nginx开始,如果我们想从头开始,我们可以通过指定ubuntu:latest来使用UbuntuDocker 镜像。 ## Dockerfile that generates an instance of http://bencane.com FROM nginx:latest MAINTAINER Benjamin Cane <ben@bencane.com> 除了FROM指令,我还使用了MAINTAINER,它用来显示 Dockerfile 的作者。 Docker 支持使用#作为注释,我将经常使用该语法,来解释 Dockerfile 的部分内容。 运行一次测试构建 因为我们继承了nginxDocker镜像,我们现在的 Dockerfile 也就包括了用来构建nginx镜像的Dockerfile中所有指令。这意味着,此时我们可以从该 Dockerfile 中构建出一个 Docker 镜像,然后以该镜像运行一个容器。虽然,最终的镜像和nginx镜像本质上是一样的,但是我们这次是通过构建 Dockerfile 的形式,然后我们将讲解 Docker 构建镜像的过程。 想要从 Dockerfile 构建镜像,我们只需要在运行docker命令的时候,加上build选项。 # docker build -t blog /root/blog Sending build context to Docker daemon 23.6 MB Sending build context to Docker daemon Step 0 : FROM nginx:latest ---> 9fab4090484a Step 1 : MAINTAINER Benjamin Cane <ben@bencane.com> ---> Running in c97f36450343 ---> 60a44f78d194 Removing intermediate container c97f36450343 Successfully built 60a44f78d194 上面的例子,我们使用了-t(tag)标识给镜像添加“blog”的标签。实质上我们就是在给镜像命名,如果我们不指定标签,就只能通过 Docker 分配的Image ID来访问镜像了。本例中,从 Docker 构建成功的信息可以看出,Image ID值为60a44f78d194。 除了-t标识外,我还指定了目录/root/blog。该目录被称作“构建目录”,它将包含 Dockerfile,以及其它需要构建该容器的文件。 现在我们构建成功了,下面我们开始定制该镜像。 使用 RUN 来执行 apt-get 用来生成 HTML 页面的静态站点生成器是用Python语言编写的,所以,在 Dockerfile 中需要做的第一件定制任务是安装 Python。我们将使用 Apt 软件包管理器来安装 Python 软件包,这意味着在 Dockerfile 中我们要指定运行apt-get update和apt-get install python-dev;为了完成这一点,我们可以使用RUN指令。 ## Dockerfile that generates an instance of http://bencane.com FROM nginx:latest MAINTAINER Benjamin Cane <ben@bencane.com> ## Install python and pip RUN apt-get update RUN apt-get install -y python-dev python-pip 如上所示,我们只是简单地告知 Docker 构建镜像的时候,要去执行指定的apt-get命令。比较有趣的是,这些命令只会在该容器的上下文中执行。这意味着,即使在容器中安装了python-dev和python-pip,但主机本身并没有安装这些。说的更简单点,pip命令将只在容器中执行,出了容器,pip命令不存在。 还有一点比较重要的是,Docker 构建过程中不接受用户输入。这说明任何被RUN指令执行的命令必须在没有用户输入的时候完成。由于很多应用在安装的过程中需要用户的输入信息,所以这增加了一点难度。不过我们例子中,RUN命令执行的命令都不需要用户输入。 安装 Python 模块 Python安装完毕后,我们现在需要安装 Python 模块。如果在 Docker 外做这些事,我们通常使用pip命令,然后参考我的博客 Git 仓库中名叫requirements.txt的文件。在之前的步骤中,我们已经使用git命令成功地将 Github 仓库“克隆”到了/root/blog目录;这个目录碰巧也是我们创建Dockerfile的目录。这很重要,因为这意味着 Docker 在构建过程中可以访问这个 Git 仓库中的内容。 当我们执行构建后,Docker 将构建的上下文环境设置为指定的“构建目录”。这意味着目录中的所有文件都可以在构建过程中被使用,目录之外的文件(构建环境之外)是不能访问的。 为了能安装所需的 Python 模块,我们需要将requirements.txt从构建目录拷贝到容器中。我们可以在Dockerfile中使用COPY指令完成这一需求。 ## Dockerfile that generates an instance of http://bencane.com FROM nginx:latest MAINTAINER Benjamin Cane <ben@bencane.com> ## Install python and pip RUN apt-get update RUN apt-get install -y python-dev python-pip ## Create a directory for required files RUN mkdir -p /build/ ## Add requirements file and run pip COPY requirements.txt /build/ RUN pip install -r /build/requirements.txt 在Dockerfile中,我们增加了3条指令。第一条指令使用RUN在容器中创建了/build/目录。该目录用来拷贝生成静态 HTML 页面所需的一切应用文件。第二条指令是COPY指令,它将requirements.txt从“构建目录”(/root/blog)拷贝到容器中的/build/目录。第三条使用RUN指令来执行pip命令;安装requirements.txt文件中指定的所有模块。 当构建定制镜像时,COPY是条重要的指令。如果在 Dockerfile 中不指定拷贝文件,Docker 镜像将不会包含requirements.txt 这个文件。在 Docker 容器中,所有东西都是隔离的,除非在 Dockerfile 中指定执行,否则容器中不会包括所需的依赖。 重新运行构建 现在,我们让 Docker 执行了一些定制任务,现在我们尝试另一次 blog 镜像的构建。 # docker build -t blog /root/blog Sending build context to Docker daemon 19.52 MB Sending build context to Docker daemon Step 0 : FROM nginx:latest ---> 9fab4090484a Step 1 : MAINTAINER Benjamin Cane <ben@bencane.com> ---> Using cache ---> 8e0f1899d1eb Step 2 : RUN apt-get update ---> Using cache ---> 78b36ef1a1a2 Step 3 : RUN apt-get install -y python-dev python-pip ---> Using cache ---> ef4f9382658a Step 4 : RUN mkdir -p /build/ ---> Running in bde05cf1e8fe ---> f4b66e09fa61 Removing intermediate container bde05cf1e8fe Step 5 : COPY requirements.txt /build/ ---> cef11c3fb97c Removing intermediate container 9aa8ff43f4b0 Step 6 : RUN pip install -r /build/requirements.txt ---> Running in c50b15ddd8b1 Downloading/unpacking jinja2 (from -r /build/requirements.txt (line 1)) Downloading/unpacking PyYaml (from -r /build/requirements.txt (line 2)) <truncated to reduce noise> Successfully installed jinja2 PyYaml mistune markdown MarkupSafe Cleaning up... ---> abab55c20962 Removing intermediate container c50b15ddd8b1 Successfully built abab55c20962 上述输出所示,我们可以看到构建成功了,我们还可以看到另外一个有趣的信息---> Using cache。这条信息告诉我们,Docker 在构建该镜像时使用了它的构建缓存。 Docker 构建缓存 当 Docker 构建镜像时,它不仅仅构建一个单独的镜像;事实上,在构建过程中,它会构建许多镜像。从上面的输出信息可以看出,在每一“步”执行后,Docker 都在创建新的镜像。 Step 5 : COPY requirements.txt /build/ ---> cef11c3fb97c 上面片段的最后一行可以看出,Docker 在告诉我们它在创建一个新镜像,因为它打印了Image ID:cef11c3fb97c。这种方式有用之处在于,Docker能在随后构建这个blog镜像时将这些镜像作为缓存使用。这很有用处,因为这样, Docker 就能加速同一个容器中新构建任务的构建流程。从上面的例子中,我们可以看出,Docker 没有重新安装python-dev和python-pip包,Docker 则使用了缓存镜像。但是由于 Docker 并没有找到执行mkdir命令的构建缓存,随后的步骤就被一一执行了。 Docker 构建缓存一定程度上是福音,但有时也是噩梦。这是因为决定使用缓存或者重新运行指令的因素很少。比如,如果requirements.txt文件发生了修改,Docker 会在构建时检测到该变化,然后 Docker 会重新执行该执行那个点往后的所有指令。这得益于 Docker 能查看requirements.txt的文件内容。但是,apt-get命令的执行就是另一回事了。如果提供 Python 软件包的Apt仓库包含了一个更新的 python-pip 包;Docker 不会检测到这个变化,转而去使用构建缓存。这会导致之前旧版本的包将被安装。虽然对python-pip来说,这不是主要的问题,但对使用了存在某个致命攻击缺陷的软件包缓存来说,这是个大问题。 出于这个原因,抛弃 Docker 缓存,定期地重新构建镜像是有好处的。这时,当我们执行 Docker 构建时,我简单地指定--no-cache=True即可。 部署博客的剩余部分 Python 软件包和模块安装后,接下来我们将拷贝需要用到的应用文件,然后运行hamerkop应用。我们只需要使用更多的COPY和RUN指令就可完成。 ## Dockerfile that generates an instance of http://bencane.com FROM nginx:latest MAINTAINER Benjamin Cane <ben@bencane.com> ## Install python and pip RUN apt-get update RUN apt-get install -y python-dev python-pip ## Create a directory for required files RUN mkdir -p /build/ ## Add requirements file and run pip COPY requirements.txt /build/ RUN pip install -r /build/requirements.txt ## Add blog code nd required files COPY static /build/static COPY templates /build/templates COPY hamerkop /build/ COPY config.yml /build/ COPY articles /build/articles ## Run Generator RUN /build/hamerkop -c /build/config.yml 现在我们已经写出了剩余的构建指令,我们再次运行另一次构建,并确保镜像构建成功。 # docker build -t blog /root/blog/ Sending build context to Docker daemon 19.52 MB Sending build context to Docker daemon Step 0 : FROM nginx:latest ---> 9fab4090484a Step 1 : MAINTAINER Benjamin Cane <ben@bencane.com> ---> Using cache ---> 8e0f1899d1eb Step 2 : RUN apt-get update ---> Using cache ---> 78b36ef1a1a2 Step 3 : RUN apt-get install -y python-dev python-pip ---> Using cache ---> ef4f9382658a Step 4 : RUN mkdir -p /build/ ---> Using cache ---> f4b66e09fa61 Step 5 : COPY requirements.txt /build/ ---> Using cache ---> cef11c3fb97c Step 6 : RUN pip install -r /build/requirements.txt ---> Using cache ---> abab55c20962 Step 7 : COPY static /build/static ---> 15cb91531038 Removing intermediate container d478b42b7906 Step 8 : COPY templates /build/templates ---> ecded5d1a52e Removing intermediate container ac2390607e9f Step 9 : COPY hamerkop /build/ ---> 59efd1ca1771 Removing intermediate container b5fbf7e817b7 Step 10 : COPY config.yml /build/ ---> bfa3db6c05b7 Removing intermediate container 1aebef300933 Step 11 : COPY articles /build/articles ---> 6b61cc9dde27 Removing intermediate container be78d0eb1213 Step 12 : RUN /build/hamerkop -c /build/config.yml ---> Running in fbc0b5e574c5 Successfully created file /usr/share/nginx/html//2011/06/25/checking-the-number-of-lwp-threads-in-linux Successfully created file /usr/share/nginx/html//2011/06/checking-the-number-of-lwp-threads-in-linux <truncated to reduce noise> Successfully created file /usr/share/nginx/html//archive.html Successfully created file /usr/share/nginx/html//sitemap.xml ---> 3b25263113e1 Removing intermediate container fbc0b5e574c5 Successfully built 3b25263113e1 运行定制的容器 成功的一次构建后,我们现在就可以通过运行docker命令和run选项来运行我们定制的容器,和之前我们启动 nginx 容器一样。 # docker run -d -p 80:80 --name=blog blog 5f6c7a2217dcdc0da8af05225c4d1294e3e6bb28a41ea898a1c63fb821989ba1 我们这次又使用了-d(detach)标识来让Docker在后台运行。但是,我们也可以看到两个新标识。第一个新标识是--name,这用来给容器指定一个用户名称。之前的例子,我们没有指定名称,因为 Docker 随机帮我们生成了一个。第二个新标识是-p,这个标识允许用户从主机映射一个端口到容器中的一个端口。 之前我们使用的基础nginx镜像分配了80端口给 HTTP 服务。默认情况下,容器内的端口通道并没有绑定到主机系统。为了让外部系统能访问容器内部端口,我们必须使用-p标识将主机端口映射到容器内部端口。上面的命令,我们通过-p 80:80语法将主机80端口映射到容器内部的80端口。 经过上面的命令,我们的容器看起来成功启动了,我们可以通过执行docker ps核实。 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d264c7ef92bd blog:latest nginx -g 'daemon off 3 seconds ago Up 3 seconds 443/tcp, 0.0.0.0:80->80/tcp blog 总结 截止目前,我们拥有了一个运行中的定制 Docker 容器。虽然在这篇文章中,我们只接触了一些 Dockerfile 指令用法,但是我们还是要学习所有的指令。我们可以检查Docker's reference page来获取所有的 Dockerfile 指令用法,那里对指令的用法说明得很详细。 另一个比较好的资源是Dockerfile Best Practices page,它有许多构建定制 Dockerfile 的最佳练习。有些技巧非常有用,比如战略性地组织好 Dockerfile 中的命令。上面的例子中,我们将articles目录的COPY指令作为 Dockerfile 中最后的COPY指令。这是因为articles目录会经常变动。所以,将那些经常变化的指令尽可能地放在最后面的位置,来最优化那些可以被缓存的步骤。 原文发布时间为:2016-06-08 本文来自云栖社区合作伙伴“Linux中国”

优秀的个人博客,低调大师

阿里宣布“千问” App 开启公测:用最强模型打造最佳个人 AI 助手

阿里巴巴今日官宣“千问” App 公测上线:用最强模型打造最佳个人 AI 助手,基于全球第一开源模型通义千问 Qwen 打造。 官方介绍称,千问 App 不仅能与用户“对话”,更能为用户“办事”,打造未来的 AI 生活入口,将陆续覆盖办公、地图、健康、外卖、订票、办公、学习、购物等多个生活场景,让千问具备更强大的办事能力。 目前,千问 App 公测版已在各大应用商店上架,并同步提供网页和 PC 版。面向全球市场的千问 App 国际版也将在近期上线,借助 Qwen 模型的海外影响力与 ChatGPT 直接争夺海外用户。 阿里方面表示,这次发布的千问 App 是一个初级版本,将用最先进的模型,打造一个“会聊天能办事的个人 AI 助手”。除了聊天足够聪明外,“能办事”将是千问 App 的一个重要发力方向。千问 App 的战略目标是打造未来的 AI 生活入口。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册