docker可以应用在哪些方面怎么增加应用

问题导读1.docker可以应用在哪些方面在開发工作方面解决了哪些问题2.docker可以应用在哪些方面在环境隔离方面有哪些应用?3.Google和Facebook都看重了docker可以应用在哪些方面那个特性

Flux 7介绍了常用嘚8个docker可以应用在哪些方面的真实使用场景,分别是简化配置、代码流水线管理、提高开发效率、隔离应用、整合服务器、调试能力、多租戶环境、快速部署我们一直在谈docker可以应用在哪些方面,docker可以应用在哪些方面怎么使用在怎么样的场合下使用?也许本文可以帮到你囿需要交流的地方,可以通过评论与我们交流

,docker可以应用在哪些方面con是首个以docker可以应用在哪些方面为中心的技术大会它面向开发者以忣对在docker可以应用在哪些方面开放平台上构建、交付、运行分布式应用感兴趣的从业者,不论这些开放平台是运行于自用笔记本上或者是数據中心的虚拟机上我们参加了这次大会,Flux7是docker可以应用在哪些方面基础的系统集成合作伙伴同时也是演讲嘉宾。

我们的CEO Aater Suleman和我们的一位客戶一同进行了演讲虽然docker可以应用在哪些方面Con大会十分有趣,但我觉得大会太关注docker可以应用在哪些方面的具体细节而忽略了docker可以应用在哪些方面的使用场景。所以在这篇文章中,我想介绍并分享一些docker可以应用在哪些方面的实际应用案例

在我们讨论docker可以应用在哪些方面嘚使用场景之前,先来看看docker可以应用在哪些方面这个工具有什么特别的地方吧

docker可以应用在哪些方面提供了轻量级的虚拟化,它几乎没有任何额外开销这个特性非常酷。

首先你在享有docker可以应用在哪些方面带来的虚拟化能力的时候无需担心它带来的额外开销其次,相比于虛拟机你可以在同一台机器上创建更多数量的容器。

docker可以应用在哪些方面的另外一个优点是容器的启动与停止都能在几秒中内完成docker可鉯应用在哪些方面公司的创始人 Solomon Hykes曾经介绍过docker可以应用在哪些方面在单纯的LXC之上做了哪些,你可以去看看

下面是我总结的一些docker可以应用在哪些方面的使用场景,它为你展示了如何借助docker可以应用在哪些方面的优势在低开销的情况下,打造一个一致性的环境

1. 简化配置 这是docker可鉯应用在哪些方面公司宣传的docker可以应用在哪些方面的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统)docker可以应用在哪些方面在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署同┅个docker可以应用在哪些方面的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度

2. 代码流水线(Code Pipeline)管理 前一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署需要经过很多的中间环境。而每一个中间環境都有自己微小的差别docker可以应用在哪些方面给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少

3. 提高开发效率 这就带来了一些额外的好处:docker可以应用在哪些方面能提升开发者的开发效率。如果你想看一个详细一点的例子可以参考Aater在大会或者昰docker可以应用在哪些方面Con上的演讲。

不同的开发环境中我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境二是我们想快速搭建开发环境。

理想状态中要达到第一个目标,我们需要将每一个服务都跑在独立的虚拟机中以便监控生产环境中服务的运行状态嘫而,我们却不想每次都需要网络连接每次重新编译的时候远程连接上去特别麻烦。这就是docker可以应用在哪些方面做的特别好的地方开發环境的机器通常内存比较小,之前使用虚拟的时候我们经常需要为开发环境的机器加内存,而现在docker可以应用在哪些方面可以轻易的让幾十个服务在docker可以应用在哪些方面中跑起来

4. 隔离应用 有很多种原因会让你选择在一个机器上运行不同的应用,比如之前提到的提高开发效率的场景等

我们经常需要考虑两点,一是因为要降低成本而进行服务器整合二是将一个整体式的应用拆分成松耦合的单个服务(译鍺注:微服务架构)。如果你想了解为什么松耦合的应用这么重要请参考Steve Yege的,文中将Google和亚马逊做了比较

5. 整合服务器 正如通过虚拟机来整合多个应用,docker可以应用在哪些方面隔离应用的能力使得docker可以应用在哪些方面可以整合多个服务器以降低成本由于没有多个操作系统的內存占用,以及能在多个实例之间共享没有使用的内存docker可以应用在哪些方面可以比虚拟机提供更好的服务器整合解决方案。

6. 调试能力 docker可鉯应用在哪些方面提供了很多的工具这些工具不一定只是针对容器,但是却适用于容器它们提供了很多的功能,包括可以为容器设置檢查点、设置版本和查看两个容器之间的差别这些特性可以帮助调试Bug。你可以在的文章中找到这一点的例证

7. 多租户环境 另外一个docker可以應用在哪些方面有意思的使用场景是在多租户的应用中,它可以避免关键应用的重写我们一个特别的关于这个场景的例子是为IoT(译者注:物联网)的应用开发一个快速、易用的多租户环境。这种多租户的基本代码非常复杂很难处理,重新规划这样一个应用不但消耗时间也浪费金钱。

使用docker可以应用在哪些方面可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉当然这一切得益于docker可以应用在哪些方面环境的启动速度和其高效的diff命令。

你可以在了解关于此场景的更多信息

8. 快速部署 在虚拟机之前,引入新的硬件资源需要消耗几天的时间docker可以应用在哪些方面的虚拟化技术将这个时间降到了几分钟,docker可以应用在哪些方面只是创建一个容器进程洏无需启动操作系统这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性

你可以在数据中心创建销毁资源而无需担心重新启动带来的開销。通常数据中心的资源利用率只有30%通过使用docker可以应用在哪些方面并进行有效的资源分配可以提高资源的利用率。

docker可以应用在哪些方面 变得越来越鋶行它可以轻便灵活地隔离环境,进行扩容方便运维管理。对开发者也更方便开发测试与部署。
最重要的是 当你面对一个陌生的項目,你可以照着 docker可以应用在哪些方面file甚至不看文档(文档也不一定全,全也不一定对)就可以很快让它在本地跑起来

现在很强调 devops 的理念,我把 devops 五个大字放在电脑桌面上格物致知了一天。豁然开朗devops 的意思就是写一个 docker可以应用在哪些方面file 去跑应用(开玩笑。

这里介绍如何使鼡 docker可以应用在哪些方面 部署前端应用千里之行,始于足下足下的意思就是,先让它能够跑起来

首先,简单介绍一下一个典型的前端應用部署流程

介绍完部署流程后简单写一个 docker可以应用在哪些方面file


  

现在这个前端服务已经跑起来了。接下来你可以完成部署的其它阶段了一般情况下,以下就成了运维的工作了不过,拓展自己的知识边界总是没错的

这时镜像存在有两个问题,导致每次部署时间过长鈈利于产品的快速交付

  • 构建镜像大小过大,1G+

陆小凤说过一个前端程序员若是每天工作八个小时,至少有两个小时是白白浪费了的一个尛时用来 npm install,另一个小时用来 npm run build

对于每次部署,如果能够减少无用包的下载便能够节省很多镜像构建时间。eslintmocha,chai 等代码风格测试模块可以放到 devDependencies 中在生产环境中使用 npm install --production 装包。

关于两者的区别可以参考文档


  

好像是快了那么一点点

我们注意到,相对于项目的源文件来讲package.json 是相对穩定的。如果没有新的安装包需要下载则再次构建镜像时,无需重新装包则可以在 npm install 上节省一半的时间。

对于 ADD 来讲如果需要添加的内嫆没有发生变化,则可以利用缓存把 package.json 与源文件分隔开写入镜像是一个很好的选择。目前如果没有新的安装包更新的话,可以节省一半時间

 

得益于缓存现在镜像构建时间已经快了不少。但是镜像的体积依旧过于庞大,也会增加每次的部署时间
考虑下每次 CI 部署的流程

  1. 把鏡像推至镜像仓库服务器
  2. 在生产服务器拉取镜像,启动容器

显而易见镜像体积过大造成传输效率低下,增加每次部署的延时

即使,構建服务器与生产服务器在同一节点下没有延时的问题。减少镜像体积也能够节省磁盘空间

关于镜像体积的过大很大一部分是因为node_modules 臭洺昭著的体积

但最后我们只需要 public 文件夹下的内容,对于源文件以及node_modules下文件占用体积过大且不必要,造成浪费
此时可以利用 docker可以应用在哪些方面 的多阶段构建,仅来提取编译后文件

# 选择更小体积的基础镜像
 

此时镜像体积从 1G+ 变成了 50M+

如果把静态资源给上传到 CDN,则没有必要打叺镜像了此时镜像大小会控制在 20M 以下

关于静态资源,可以分类成两部分

  • /static此类文件在项目中直接引用根路径,打包时复制进 /public 下需要被咑入镜像
  • /build,此类文件需要 require 使用会被 webpack 打包并加 hash 值,并可以通过 publicPath 修改资源地址可以把此类文件上传至 cdn,并加上永久缓存不需要打入镜像
# 選择更小体积的基础镜像
 

以上就是本文的全部内容,希望对大家的学习有所帮助也希望大家多多支持脚本之家。

我要回帖

更多关于 docker可以应用在哪些方面 的文章

 

随机推荐