容器化你的Web应用:且看Docker如何解决Web工程师的烦恼的

本文讲的是容器化你的Web应用:且看Docker如何解决Web工程师的烦恼的,【编者的话】Docker现在炙手可热,笔者认为是时候开始考虑把你的Web应用移植到Docker中去了。但是Docker的原理跟Web开发中的技术相差甚远,理解Docker并不是特别容易。所以本文目的就是帮助Web工程师们认识什么是Docker,以为它在Web开发中能帮助解决哪些实际问题。

如果你是Web工程师,很可能你对Docker已经有所耳闻,并对它的近况略知一二。Docker现在炙手可热,笔者认为是时候开始考虑把你的Web应用移植到Docker中去了。但是Docker的原理跟Web开发中的技术相差甚远,理解Docker并不是特别容易。所以本文目的就是帮助Web工程师们认识什么是Docker,以为它在Web开发中能帮助解决哪些实际问题。

什么是Docker?

Docker是一个开源的工具,它能够让容器互不干扰地运行在Linux上,并且可以快速地在容器内部署应用。Docker可以让任何应用运行在可移植的,隔离的容器上。开发人员开发和测试时在个人电脑上使用的容器可以无缝运行在如虚拟机、云等其它正式的运维环境下。

使用容器,你可以灵活的部署你的Web应用。你可以把你的应用运行在不同的容器上,比如让MySQL、Apache和WordPress各运行在一个容器上,也可以把这三个应用运行在一个容器上。一个容器上运行几个应用,因需而定,没有绝对的好与坏,对与错。

Docker 容器 VS 虚拟机

把应用从底层Linux操作系统中隔离出来,是个很奇妙的事情。虽然容器不能替代虚拟机,但是比较容器与虚拟机的异同,还是很有意义的。虚拟机是虚拟一个完整的操作系统,包括独立的内存管理、设备驱动等。相反,容器则是共享主机的这些资源,因此容器是比较容易管理的。

容器 & 容器即服务

容器其实已经存在了一段时间了,但是它一直都没有成为行业标准。Docker的出现,使之成为了可能,因为Docker容易学习和使用,并且提供广泛的技术支持。

Docker是基于LXC(Linux容器)实现的,但是它并不是要替代LXC的。相反,Docker则是基于LXC提供一些高级的功能,比如版本化应用、跨主机部署可迁移的应用。如果您想了解更多关于Docker与LXC的关系,请参考StackOverFlow的这个问答

Docker在网页开发中的实际用例

Docker从一开始就被设计成是可以在不同的场景下应用的。除了docker.com上的那些用例,我们还可以看看下面的这些用例,无不借助于Docker所提供的强大且一致的环境。

强大的Docker社区

Docker一个显著的优点就是它提供的容器,下载下来就能使用。而且随着社区人员的快速增长,越来越多为容器被发布出来。这些容器里包含了很多当前流行的应用如MySQL和WordPress,大家都可以拿来就用。

如果你想要跑一个WordPress的应用,你可以从Docker Hub上下载镜像,然后简单的跑如下命令就可以了。

docker run –name some-wordpress –link some-mysql:mysql -d wordpress

对本地开发的强大支持

作为一个Web程序员,你很有可能是在自己的电脑上开发代码,然后再发布到运维系统上。使用Docker可以让你开发环境和最终的上线环境保持一致,避免因为上线系统配置的不同还要在最后时刻修改代码的尴尬。

在本地开发中使用Docker容器,可以极大提供软件开发效率,避免最后时刻因运行系统配置的不同而带来的麻烦。

快速部署

在过去的几十年里,从硬件部署的几天到虚机部署几分钟再到容器部署的几秒钟,快速部署一直在发生着日新月异的变化。使用Docker,你可以在短短几秒之内就能让应用启动并运行起来。因为创建容器不需要重新启动操作系统,所以使用容器运行应用的确节省时间。

应用隔离所带来的安全沙盒化

在Docker中,一个容器其实是跑了一个应用或者一个进程。每个容器都有自己单独的运行时环境,它有自己独立的进程空间,而且能够接收发送到容器的网络数据。

如果你需要安装不同版本的Python或者其它软件库,那你可以考虑使用Docker 容器。你可以在不同的容器上安装不同版本的软件库,这样你就可以避免不同版本的软件库安装在同一主机上所带来的麻烦。

容器带来的安全性

把不同应用运行在不同的容器上,可以提高系统的安全性。因为每个容器只能访问其他容器显式暴露出来的端口和文件。 而且容器可以在更高层次上对于系统上存储什么数据,安装什么软件进行控制。一些运行在一个容器上可疑脚本是不会影响其它容器的。

更新是一个重要的安全隐患,把应用运行在容器上可以让更新过程容易一些。

简化测试

用Docker容器来搭建测试环境是非常容易的。想想那些不同的框架,数据库以及不同版本的Python,在虚拟环境下测试时非常具有挑战的。

使用Docker容器进行测试,把不同版本的应用运行在不同的容器上,可以极大地加快测试速度。

简单配置

Docker容器越来越广泛的被应用有着许多原因,但是简单快速部署绝对是其中重要的一个。把应用运行在虚拟机上,可以把应用所需的配置从基础设施里隔离出来。Docker也提供相同的功能,却没有虚拟机那样大的开销。不过Docker并不能替代虚拟机,它们有各自的使用领域。

容器化你的Web应用

容器化你的Web应用不仅可以加快部署,还可以让部署变得更容易。Docker容器极具可移植性及灵活性,作为一个网页开发工程师,你可以借助docker让你的开发环境更加强劲。

原文链接: Containerize your web development: How Docker is solving real world problems for web developers! (翻译:钱巧能 校对:李颖杰)

原文发布时间为:2015-07-05 

本文作者:QianQiaoNeng 

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:容器化你的Web应用:且看Docker如何解决Web工程师的烦恼的

时间: 2024-10-30 18:50:05

容器化你的Web应用:且看Docker如何解决Web工程师的烦恼的的相关文章

微服务应用容器化场景中常见问题总结

简介 云原生技术栈是下一代应用转型的必然选择,它包含了微服务架构,DevOps和容器技术.对于微服务架构来说,应用是"第一公民",他逐渐蚕食原来底层软件或者硬件的功能,例如服务注册与发现以及负载均衡:而对于容器平台来说,容器是"第一公民",他提供了容器注册与发现和负载均衡,同时容器技术将应用和外面的世界做了隔离,这样很多应用运行的假设就会失效.那当微服务应用运行在容器中的时候,我们会遇到哪些常见问题?我们又该如何解决呢? 企业应用在向微服务架构转型的过程中,微服务如

虚拟化 VS 容器化

本文讲的是虚拟化 VS 容器化,[编者的话]以 Docker 为代表的容器技术一度被认为是虚拟化技术的替代品,然而这两种技术之间并不是不可调和的.作者分别列举了容器技术以及虚拟化技术的优缺点,并提出将两者结合取长补短的解决方案. 容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境.为了能达到这种效果,容器技术使用了一系列的系统级别的机制诸如利用Linux namespaces来进行空间隔离,通过文件系统的挂载点来决定容器

利用WebBrowser彻底解决Web打印问题

原文:利用WebBrowser彻底解决Web打印问题 利用WebBrowser彻底解决Web打印问题(包括后台打印) BS架构下的打印大家是怎么解决的呢,我最近作了一个项目正好负责这一块,不仅要求打印页面的特定部分,还要求有后台的批量打印,在网上查了一些资料,最后终于解决了.抱着"取之于众 服务于众"的思想,我总结了一下,把它拿到网上来与大家分享,希望能帮助遇到类似问题的朋友. 我主要使用了IE内置的WebBrowser控件,无需用户下载和安装.WebBrowser有很多功能,除打印外

不看不知道,容器化OpenStack的10个好处

1.升级 这个其实大家都可以想到,容器最大的特点,就是升级.企业使用OpenStack,最大的一个顾虑,就是升级.尤其在OpenStack 1年两个版本下,不断的有新的功能的需求的情况下,如果不能升级,其实是很痛苦.尤其在企业的迅速发展的过程中. 容器化的OpenStack,升级有多么简单呢?其实就是删掉容器,换上新的容器,用户基本是无感知的状态下完成. 升级子所以很困难,有一个很现实的原因,线上环境,很难模拟,升级验证测试很难进行.当采用容器化以后,我们很容易模拟出一个线上环境,进行升级测试,

不看不知道,容器化 OpenStack 的10个好处

1.升级 这个其实大家都可以想到,容器最大的特点,就是升级.企业使用OpenStack,最大的一个顾虑,就是升级.尤其在OpenStack 1年两个版本下,不断的有新的功能的需求的情况下,如果不能升级,其实是很痛苦.尤其在企业的迅速发展的过程中. 容器化的OpenStack,升级有多么简单呢?其实就是删掉容器,换上新的容器,用户基本是无感知的状态下完成. 升级子所以很困难,有一个很现实的原因,线上环境,很难模拟,升级验证测试很难进行.当采用容器化以后,我们很容易模拟出一个线上环境,进行升级测试,

阿里搜索业务容器化中的一些经验和思考

概要 参加了上一次CNUTCON 大会,有来自coreos的李响,分享了很多关于etcd的事情,以及关于k8s包括自己和coreos公司的一些观点:还有来自mesos的tim chen, 他分享了很多mesos的思路以及一些接入容器过程中踩过的一些坑:swarm kit的负责人陈东洛也分享了swarm的思路,这方面由于刚出来没多久以及分享的同学也只有他,所以东西并不多:总的来说,感触很深. 关于容器和编排,想到开源和创业 从会议分享者来看.相比去年,容器技术有了更大的发展:docker很热,每一

DockOne微信分享(一一七):沪江容器化运维实践

本文讲的是DockOne微信分享(一一七):沪江容器化运维实践[编者的话]沪江目前容器技术主要应用场景:OCS课件业务无状态应用:基于Apache Mesos+Marathon实现沪江容器系统调度管理:Consul + Consul Template + Nginx实现服务自动发现和注册:Prometheus + Grafana + Alertmanager报警实现容器监控报警.本次分享将从以下几方面来讲解: 选择容器技术缘由 容器技术选型 容器存储 容器网络 监控报警 镜像管理 调度管理 服务

DockOne微信分享(九十八):Insta360容器化&DevOps之路

本文讲的是DockOne微信分享(九十八):Insta360容器化&DevOps之路[编者的话]作为一个全景/VR创业公司,随着公司人员增加以及全球化方向转变,刀耕火种的CI/CD方式已经不能满足当前的需求.综合考虑当前的人员状况与技术架构的拓展性后,我们采用一套以阿里云为基础,Docker为核心,第三方服务为工具的开发.测试.部署流程,以及内部的代码提交,版本管理规范. 背景 我司是一家集硬件研发与软件开发为一体的互联网创业公司.2016被称为全景/VR元年,预示了机遇到来的同时,也注定了我们

暴走漫画基于阿里云的全面容器化架构实践

标题有所修改. 很高兴能和大家分享一些暴走漫画基于公有云的容器化架构的实践经验. 基于之前在暴漫的经验,我到了扇贝以后,大概用了一个月的时间,就将扇贝的产品成功迁移到了容器环境中,并做了很多改进,也有了更多的思考. 暴走漫画(以下简称"暴漫")相信大家都不陌生,它应该算一个互联网应用.先简单介绍一下背景:暴漫主要做App和网站,后端主要是Ruby,也有一些Python.Scala的异构化系统.整体架构是标准的互联网应用架构.包括负载均衡.Nginx.应用服务器.数据库(MySQL),等