随着Docker技术的不断成熟,越来越多的企业开始考虑使用Docker。Docker有很多的优势,如持续集成、版本控制、可移植性、隔离性、安全性和高性能。

另外一方面如何在企业云中实施docker,是直接使用docker(Cloud by Docker)还是将docker运行在vm中进行管理(Docker in Cloud)?

本文将总结优势,分析部署模式,以及最后通过2个视频demo来了解下云中运行docker的模式情况

1.六大优势

1.1 持续部署与测试

Docker在开发与运维的世界中具有极大的吸引力,因为它能保持跨环境的一致性。在开发与发布的生命周期中,不同的环境具有细微的不同,这些差异可能是由于不同安装包的版本和依赖关系引起的。然而,Docker可以通过确保从开发到产品发布整个过程环境的一致性来解决这个问题*Docker容器通过相关配置,保持容器内部所有的配置和依赖关系始终不变。最终,你可以在开发到产品发布的整个过程中使用相同的容器来确保没有任何差异或者人工干预。

使用Docker,你还可以确保开发者不需要配置完全相同的产品环境,他们可以在他们自己的系统上通过VirtualBox建立虚拟机来运行Docker容器。Docker的魅力在于它同样可以让你在亚马逊EC2实例上运行相同的容器。如果你需要在一个产品发布周期中完成一次升级,你可以很容易地将需要变更的东西放到Docker容器中,测试它们,并且使你已经存在的容器执行相同的变更。这种灵活性就是使用Docker的一个主要好处。和标准部署与集成过程一样,Docker可以让你构建、测试和发布镜像,这个镜像可以跨多个服务器进行部署。哪怕安装一个新的安全补丁,整个过程也是一样的。你可以安装补丁,然后测试它,并且将这个补丁发布到产品中。

1.2 多云平台

Docker最大的好处之一就是可移植性。在过去的几年里,所有主流的云计算提供商,包括亚马逊AWS和谷歌的GCP,都将Docker融入到他们的平台并增加了各自的支持。Docker容器能运行在亚马逊的EC2实例、谷歌的GCP实例、Rackspace服务器或者VirtualBox这些提供主机操作系统的平台上。举例来说,如果运行在亚马逊EC2实例上的Docker容器能够很容易地移植到其他几个平台上,比如说VirtualBox,并且达到类似的一致性和功能性,那这将允许你从基础设施层中抽象出来。除了AWS和GCP,Docker在其他不同的IaaS提供商也运行的非常好,例如微软的Azure、OpenStack和可以被具有不同配置的管理者所使用的Chef、Puppet、Ansible等。

1.3 环境标准化和版本控制多云平台

Docker最大的好处之一就是可移植性。在过去的几年里,所有主流的云计算提供商,包括亚马逊AWS和谷歌的GCP,都将Docker融入到他们的平台并增加了各自的支持。Docker容器能运行在亚马逊的EC2实例、谷歌的GCP实例、Rackspace服务器或者VirtualBox这些提供主机操作系统的平台上。举例来说,如果运行在亚马逊EC2实例上的Docker容器能够很容易地移植到其他几个平台上,比如说VirtualBox,并且达到类似的一致性和功能性,那这将允许你从基础设施层中抽象出来。除了AWS和GCP,Docker在其他不同的IaaS提供商也运行的非常好,例如微软的Azure、OpenStack和可以被具有不同配置的管理者所使用的Chef、Puppet、Ansible等。通过上面的讨论,Docker容器可以在不同的开发与产品发布生命周期中确保一致性,进而标准化你的环境。除此之外,Docker容器还可以像git仓库一样,可以让你提交变更到Docker镜像中并通过不同的版本来管理它们。设想如果你因为完成了一个组件的升级而导致你整个环境都损坏了,Docker可以让你轻松地回滚到这个镜像的前一个版本。这整个过程可以在几分钟内完成,如果和虚拟机的备份或者镜像创建流程对比,那Docker算相当快的,它可以让你快速地进行复制和实现冗余。此外,启动Docker就和运行一个进程一样快。

1.4 隔离性

Docker可以确保你的应用程序与资源是分隔开的。几个月前,Gartner发表了一篇报告,这份报告说明了运行Docker 容器进行资源隔离的效果和虚拟机(VM)管理程序一样的好,但是管理与控制方面还需要进行完善。

我们考虑这样一个场景,你在你的虚拟机中运行了很多应用程序,这些应用程序包括团队协作软件(例如Confluence)、问题追踪软件(例如JIRA)、集中身份管理系统(例如Crowd)等等。由于这些软件运行在不同的端口上,所以你必须使用Apache或者Nginx来做反向代理。到目前为止,一切都很正常,但是随着你的环境向前推进,你需要在你现有的环境中配置一个内容管理系统(例如Alfresco)。这时候有个问题发生了,这个软件需要一个不同版本的Apache Tomcat,为了满足这个需求,你只能将你现有的软件迁移到另一个版本的Tomcat上,或者找到适合你现有Tomcat的内容管理系统(Alfresco)版本。

对于上述场景,使用Docker就不用做这些事情了。Docker能够确保每个容器都拥有自己的资源,并且和其他容器是隔离的。你可以用不同的容器来运行使用不同堆栈的应用程序。除此之外,如果你想在服务器上直接删除一些应用程序是比较困难的,因为这样可能引发依赖关系冲突。而Docker可以帮你确保应用程序被完全清除,因为不同的应用程序运行在不同的容器上,如果你不在需要一款应用程序,那你可以简单地通过删除容器来删除这个应用程序,并且在你的宿主机操作系统上不会留下任何的临时文件或者配置文件。

除了上述好处,Docker还能确保每个应用程序只使用分配给它的资源(包括CPU、内存和磁盘空间)。一个特殊的软件将不会使用你全部的可用资源,要不然这将导致性能降低,甚至让其他应用程序完全停止工作。

1.5 安全性

如上所述,Gartner也承认Docker正在快速地发展。从安全角度来看,Docker确保运行在容器中的应用程序和其他容器中的应用程序是完全分隔与隔离的,在通信流量和管理上赋予你完全的控制权。Docker容器不能窥视运行在其他容器中的进程。从体系结构角度来看,每个容器只使用着自己的资源(从进程到网络堆栈)。

作为紧固安全的一种手段,Docker将宿主机操作系统上的敏感挂载点(例如/proc和/sys)作为只读挂载点,并且使用一种写时复制系统来确保容器不能读取其他容器的数据。Docker也限制了宿主机操作系统上的一些系统调用,并且和SELinux与AppArmor一起运行的很好。此外,在Docker Hub上可以使用的Docker镜像都通过数字签名来确保其可靠性。由于Docker容器是隔离的,并且资源是受限制的,所以即使你其中一个应用程序被黑,也不会影响运行在其它Docker容器上的应用程序。

1.6 高性能

我们知道Docker基于LXC,而LXC不同于传统KVM、ESXi、XEN等Hypervisor来模拟物理机运行机理的虚拟化手段,其运作机理是直接在OS层面,通过进程隔离方式来模拟运行环境,这样就减少了由于Hypervisor层带来的“翻译”损耗,在实际测试中LXC的性能几乎可以与物理机相媲美,这是传统VM望尘莫及的,它的这种特性特别适合于HPC、大数据、机器学习等将物理机“榨干运行”的场景,而且有不失快速部署和自动化的能力。

2.关于docker的部署模式

2.1 基于docker的云(Cloud By Docker)

指的是直接使用docker作为云的基础设施(主要是计算能力,作为计算子系统),这种模式下性能最高,但由于docker对于存储、网络能力支持有限所以需要云操作系统提供另外两个子系统的支撑方能更好的运转。

  • 这种模式的好处:享受docker所带来的六大优势(尤其是高性能)、云的各项服务继续使用
  • 挑战是:对于容器的管理、云平台本身对docker的适配

如下是一个云中直接使用lxc以及docker模板来作为计算子系统的视频demo

src="http://player.youku.com/embed/XMTUzNjcyMzQwNA" allowfullscreen="" height="400" width="640">

2.2 云中的docker(Docker in Cloud)

这种模式下也有2种模式:
1、是在IaaS云中提供例如CoreOS这样的VM镜像,并通过支持EC2接口(传递user data)可以快速部署docker,并且基于云平台的VPC(云网络与格力)、ELB(负载均衡)、EBS(弹性块存储)给与docker更好的支持。

  • 这种模式的好处:云平台只要支持EC2接口即可立即使用docker带来的各种好处
  • 挑战是:vm带来的性能损耗、对于docker的容器的管理

如下是一个支持EC2接口的云中,采用CoreOS模板运行docker并使用云中的ELB(负载均衡)的demo视频:

src="http://player.youku.com/embed/XODk5ODg4NTcy" allowfullscreen="" height="400" width="640">

2、云平台需提供PaaS能力—ECS(弹性容器服务)服务,在这种模式下docker将作为一类托管对象(host)云中快速提供(类似Elastic Beanstalk)只要你输入参数,云平台将自动创建docker集群并且维系集群的可用性与弹性。

  • 这种模式的好处:用户只需关注应用开发,而应用的资源的弹性和HA由云来保障
  • 挑战是:vm带来的性能损耗

;-)很快提供这个视频……

Docker六大优势,云中部署模式、以及视频demo相关推荐

  1. PaddleOCR——Docker环境下基于HubServing模式部署Restful API服务(CPU版本)

    Docker环境下基于HubServing模式部署Restful API服务(CPU版本) 在日常项目应用中,相信大家一般都会希望能通过Docker技术,把PaddleOCR服务打包成一个镜像,以便在 ...

  2. 快上车,带你了解HiLens Studio六大优势

    曾几何时, 在我们青春年少时, 当我们看到某篇AI的技术文章时, 心中总不免想要在一个合适的环境上试上一试,于是就去搜索,发现要先装个编程工具(如某款IDE),嗯,好,那就先装一个吧:哦?还要指定的操 ...

  3. docker原理介绍以及部署使用

    docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...

  4. 云计算机根据部署方式,云计算的三种类型及部署模式

    云计算的三种类型及部署模式 猫先生 • 2019 年 07 月 08 日 云计算让开发人员和 IT 部门可以全身心投入最有价值的工作,避免采购.维护.容量规划等无价值的工作分散精力.云计算已经日渐普及 ...

  5. 快速云:云服务器四种部署模式之混合云

    混合云 美国国家标准与技术研究院对混合云的定义为:由两种或两种以上的云(私有云.社区云或公有云)组成的云基础设施,每种云保持独立实体,但云服务器之间用标准的或专有的技术组合起来,使得其间的数据和应用程 ...

  6. Docker概述和安装部署

    概述 Docker产生的背景 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后 ...

  7. 丢掉虚拟机,在裸机上使用 Kubernetes 六大优势!

    原文链接:https://dzone.com/articles/use-kubernetes-on-bare-metal 如果你喜欢在虚拟机上部署Kubernetes,请丢弃它,使用裸机部署,本文介绍 ...

  8. Nacos 集群部署模式最佳实践

    作者 | kiritomoe 来源 | https://mp.weixin.qq.com/s/sSTY5BivxrH4wR2-dNMkzw 1 前言 Nacos 支持两种部署模式:单机模式和集群模式. ...

  9. android微信动画制作,动画制作轻量级SDK:PAG六大优势助力开发

    原标题:动画制作轻量级SDK:PAG六大优势助力开发 动画特效可以辅助视觉制作焦点,引导注意力的方向,越来越为广大视觉设计师青睐,并广泛应用于各类场景开发. 关于动画设计工具,既有 Framer.js ...

  10. 有几种部署模式_来!PyFlink 作业的多种部署模式

    关于 PyFlink 的博客我们曾介绍过 PyFlink 的功能开发,比如,如何使用各种算子(Join/Window/AGG etc.),如何使用各种 Connector(Kafka, CSV, So ...

最新文章

  1. 输出三角形(3.12)(Java)
  2. Commons Logging 快速入门(五)
  3. java根据模板生成PDF
  4. 用户控件中得到CurrentUser
  5. linux用户修改密码
  6. ubuntu远程桌面连接windows系统
  7. 自己做的PPT试题或其它文件模板有时被系统还原成原来默认的样子,如何解决?
  8. pano2vr导出html看不,【答疑】pano2vr6导出的全景,是空白的,打不开,? - 视频教程线上学...
  9. def在python中什么意思_《python中的def是什么意思》
  10. linux文件权限651,Linux基础之文件权限详解
  11. LeetCode 643. 子数组最大平均数 I(简单)
  12. 淘宝至强cpu为什么那么便宜
  13. 一山一世界,雅居乐陈卓林“乐活”美好生活,在此进阶
  14. omap3530支持gpu模块
  15. 【图像分割】基于贝叶斯算法阙值图像分割matlab代码
  16. go日志库log/zap/logrus
  17. shadow acne(阴影失真)和peter panning(阴影悬浮)
  18. golang 报错is not in GOROOT
  19. Linux 系统必备入门级自学手册!
  20. gprMax电磁波正演模拟方法

热门文章

  1. [C++]牛客 WY11 星际穿越
  2. 深度学习day05-利用TensorFlow搭建图像分类感知机模型,并使用模型进行图片分类
  3. 思科2960交换机光口激活失败,提示has bad crc,解决方法
  4. 微信ipad 62 A16登录协议,小程序code 小程序sessionid 获取
  5. kafka auto.offset.reset值失效 earliest/latest详解
  6. javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)
  7. 在win7下面安装ubuntu 16.04.4双系统
  8. 用v-modle做一个简单的计算器
  9. js基础 js函数作用域链
  10. [教程] PSP 5.00M33-6升级图文教程