IaaS

IaaS阶段, 用户租借基础设施,但是还是需要像以前管理服务器那样,用脚本或者手工方式在这些机器上部署应用。这个过程中当然难免会碰到云端机器和本地机器环境不一致的问题。想想每一次同步不同机器环境的过程,就知道这个过程的艰辛!

PaaS

2013年,Cloud Foundry开启了以开源PaaS为核心构建平台层服务能力的变革, 通过在容器底层使用Namespace和Cgroups对应用进行隔离,Cloud Foundry通过这个隔离的沙箱让多个应用能在一起互不干涉的运行。

百度百科:
Cloud Foundry支持多种框架、语言、运行时环境、云平台及应用服务,通过一套应用的打包和分发机制,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

虽然Cloud Foundry提供了一个更好的用户体验,但是还是存在易用性问题:

对于一个"正确的"应用包,Cloud Foundry能实现快速部署,但为了能打包出这个"正确的"应用包, 过程却很繁琐,用户可能需要为不同语言和框架,甚至每个版本打一个包,而打好的包在本地能正常运行,但是在云端却不一定能正常运行。

CaaS

这个时候,Docker项目开源了,虽然Docker底层和Cloud Foundry一样,都是使用Namespace和Cgroups技术,但是另外的一小部分功能,却成为了Docker项目后面成功的关键:

通过打包整个根文件系统,把应用的所有依赖(包括操作系统文件)都打包到一起,生成Docker镜像,Docker通过Docker镜像解决了Cloud Foundry打包繁琐和不一致性的问题,提供了一种"build once, run anyway"的优雅解决办法!

容器编排(Container Orchestration)

虽然Docker项目发展迅猛,但是对于用户而言,最终要部署的,还是他们的网站、服务甚至云计算等。一个Docker中运行的是一个进程,对于用户的大规模集群而言,只有提供平台层能力的工具才会真正吸引他们。这种情况下,支持大集群容器管理的Docker Swarm和Kubernetes来了。

这里不讨论各大公司间狗血的争斗,只简单讨论下为什么Docker Swarm最终落败于Kubernetes:

Docker Swarm通过Docker镜像部署应用,但是实际上一个Docker容器里只管理一个进程。现实环境下,提供一个完整的服务通常需要多容器配合才行,比如容器A和容器B/C配合提供服务,且容器A需要容器B/C先启动, Swarm里面对这种情况的处理就比较麻烦。而Kubernetes却通过Pod轻松的解决了这一点。

容器基础(一): Docker介绍的更多相关文章

  1. 容器化-Docker介绍

    导读:本文章对Docker技术进行了介绍,阐述了Docker的技术发展历程.容器与虚拟机的差异.Docker原理.特点.Docker三组件和Docker带来的影响,为我们进一步理解Docker打下基础 ...

  2. 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云

    一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...

  3. Docker 介绍及基础命令

    Docker 简介 Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linu ...

  4. docker容器基础

    一.docker容器基础6种名称空间:UTS.MOunt.IPC.PID.User.Net (1) Linux Namespaces:namespace 系统调用参数 隔离内容 内核版本  UTS   ...

  5. URLOS开发基础教程——docker容器的使用方法

    URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇就以docker容器的基本使用方法为例,快速的让大家对docker有一个全面的印象. ...

  6. 【转帖】使用容器化和 Docker 实现 DevOps 的基础知识

    使用容器化和 Docker 实现 DevOps 的基础知识 https://www.kubernetes.org.cn/6730.html 2020-02-24 15:20 灵雀云 分类:容器 阅读( ...

  7. 容器技术之Docker基础入门

    前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...

  8. Docker容器基础入门认知-网络篇

    这篇文章中,会从 docker 中的单机中的 netns 到 veth,再到单机多个容器之间的 bridge 网络交互,最后到跨主机容器之间的 nat 和 vxlan 通信过程,让大家对 docker ...

  9. 3.云原生之Docker容器三大核心概念介绍

    转载自:https://www.bilibili.com/read/cv15181760/?from=readlist docker search --no-trunc=false [镜像名称] #搜 ...

随机推荐

  1. fast rcnn的实例

    http://www.cnblogs.com/louyihang-loves-baiyan/p/4906690.html https://saicoco.github.io/object-detect ...

  2. npm包发布过程

    在上一章节中,我封装了一个基于react的树状组件,后来想把它发布到npm上,下面主要介绍一下发布过程中遇到的问题: 1.去注册npm账号,注册地址(https://www.npmjs.com), 再 ...

  3. Webpack4 学习笔记四 暴露全局变量、externals

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack 暴露全局变量 通过 expose-loader 内联配置 在 webpack中配置 每个模块通过注入的方式 通过CD ...

  4. mpvue重构小程序之坑点1

    对于最近刚做的项目,想着用框架重新架构一遍,方便以后拓展,毕竟现在拓展方向非常大. 目前主要碰到两个略坑的问题: 1: 关于用户授权信息的按钮,原生是以下方式,使用bindgetuserinfo事件 ...

  5. 在ubuntu中docker的简单使用(一)

    >>docker version 当运行docker version 命令出现Cannot connect to Docker daemon. Is the docker daemon r ...

  6. linux数据库copy方法

    相信大多数程序员都会遇到数据库copy的问题,下面就总结几种常见的方法,针对有mysql基础的同学参考 方法一:利用sqlyog的copy database的功能,如图 这种最简单,速度比较慢: 方法 ...

  7. spring-bean(xml方式DI)

    三种属性注入方式 构造函数注入 1.在Bean实体中写入构造函数(带参构造) 2. <bean id=”该bean的名称” class=”注入的bean的全路径”> <constru ...

  8. Sublime Text3的快捷键和插件

    今天重装了一下Sublime Text3,发现了一个不错的网站,关于Sublime Text3的插件安装介绍的很详细,还有右键增强菜单和浏览器打开快捷键的创建.奉上链接 http://www.cnbl ...

  9. 《算法》第四版 IDEA 运行环境的搭建

    <算法>第四版 IDEA 运行环境的搭建 新建 模板 小书匠 在搭建之初,我是想不到会出现如此之多的问题.我看了网上的大部分教程,都是基于Eclipse搭建的,还没有使用IDEA搭建的教程 ...

  10. elasticsearch 5.x 系列之七 基于索引别名的零停机升级服务

    一,写在前面的话,elasticsearch 建立索引时的Mapping 设置 建议你在设计索引的初期,就把索引的各个字段设计好,因为,elasticsearch 的各个字段,定义好类型后,就无法进行 ...