提起Docker,我们不得不说说容器技术。容器技术这几年一直是最热门的话题,如果你还不知道说明你真的out了。为什么容器这么火呢,那是因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。而如今最热门的开源容器工具就是docker了。

让我们先聊聊历史,在很久很久以前,想要在线上服务器部署一个应用,首先需要购买一个物理服务器,在服务器安装一个操作系统,然后安装好应用所需要的各种依赖环境,最后才可以进行应用的部署,而且一台服务器只能部署一个应用。这就是我们所说的传统IT。

如下图

这就造成了以下几个明显问题:

  • 部署应用非常慢
  • 需要花费的成本非常高
  • 而且容易造成资源的浪费,因为往往一个应用使用不了一个服务器的资源
  • 难于迁移和扩展
  • 可能会被限定硬件厂商,因为那时候有不同硬件平台

虚拟化技术出现以后,对于这种问题有所改变,虚拟化技术会在本地操作系统之上加多一层 Hypervisor层,Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可以虚拟化硬件资源,例如cpu、硬盘、内存资源等。然后我们可以基于通过虚拟化出来的资源之上安装操作系统,这也就是所谓的虚拟机。

通过Hypervisor层,我们可以创建不同的虚拟机,并且可以限定每个虚拟机的物理资源,并且每个虚拟机都是分离、独立的。例如A虚拟机给它使用2个CPU、8G内存、100G磁盘,B虚拟机给它使用4个CPU、16G内存、500g磁盘等等,这样就可以实现物理资源利用率的最大化。

如此一来:

  • 一台物理机就可以部署多个应用
  • 每个应用都可以独立运行在一个虚拟机里

如下图

虚拟化技术的优点:

  • 资源池——一个物理机的资源分配到了不同的虚拟机里
  • 很容易扩展——增加物理机或者虚拟机即可,因为虚拟机是可以复制的
  • 很容易云化——亚马孙AWS,阿里云,谷歌云等

即然虚拟化技术已经很强大了,为什么还需要容器技术呢?这就涉及到虚拟化技术所带来的局限性了,每一个虚拟机都是一个完整的操作系统,所以需要给其分配物理资源,当虚拟机数量增多时,操作系统本身消耗的资源势必增多

以上所提到的这个问题还不是真正促使容器技术出现的根本原因,真正使容器技术出现的是开发和运维所面临的挑战:

上图中可以看到开发与运维的环境都比较复杂,一个应用可能由多个服务组成,每个服务都有其独特的依赖。同时应用可能会需要部署到多种不同的环境中。这使得一个应用在“开发-测试-部署-运维”的过程中需要进行大量的运行环境适配工作。而容器技术正是解决了这种环境不一致的问题:

容器可以帮我们把开发环境及应用整个打包带走,打包好的容器可以在任何的环境下运行,这样就可以解决开发与运维环境不一致的问题了,所以:

  • 容器解决了开发和运维之间的矛盾
  • 在开发和运维之间搭建了一个桥梁,是实现devops的最佳解决方案

了解了容器解决了什么问题,那让我们用简单的几句话说明什么是容器

  • 对软件和其依赖环境的标准化打包
  • 应用之间相互隔离
  • 共享一个OS Kernel
  • 可以运行在很多主流操作系统上

那么问题来了,容器和虚拟机的区别:

现在让我们比较一下:

当然,我们还可容器可以和虚拟机结合在一起使用,而且这也是目前主流的做法。

说说Docker

Docker也是容器技术的一种实现,也是目前比较主流的开源的容器实现工具,docker出现的时间轴:

Docker容器的思想:

Docker容器的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮,docker就是集装箱。

1. 不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。

2. 你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。

3. 在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。总之docker就是集装箱原理。

好了,如果想具体学习Docker就看后面的文章吧~

注意:本文最早由东方瑞通讲师韩梅老师发表于讲师原创专区,转载请注明出处!

即学即用Docker(一):说说容器和Docker,个人培训、企业定制培训,选东方瑞通不会错,400-690-6115,北京 上海 广州 深圳 天津 成都 重庆 武汉 济南 青岛 杭州 西安。​www.easthome.com

什么是容器服务_即学即用Docker(一):说说容器和Docker相关推荐

  1. 什么是容器服务_【小牛云计算课堂】什么是容器镜像服务

    容器镜像服务(Container Registry)提供安全的应用镜像托管能力,精确的镜像安全扫描功能,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理.容器镜像服务简化了 ...

  2. 什么是容器服务_携程万台规模容器云平台运维管理实践

    *本文来自于周昕毅在GOPS全球运维大会上的分享,由高效运维公众号整理,略有修改* 前言 本文将分享携程在私有云平台管理实践过程中踩过的坑和遇到的问题,包含: 第一部分,携程容器云概览 第二部分,容器 ...

  3. 容器和 批量删除 镜像_更高更快更稳,看阿里巴巴如何修炼容器服务「内外功」...

    作者:守辰.志敏 来源:阿里巴巴云原生公众号 11 月 11 日零点刚过 26 秒,阿里云再一次抗住了全球最大的流量洪峰.今年 双11 是阿里经济体核心系统全面云原生化的一年,相比去年核心系统的上云, ...

  4. 国内唯一,阿里云容器服务进入 Forrester 领导者象限

    作者:ACK 近日,国际权威咨询机构 Forrester 发布< The Forrester WaveTM: Public Cloud Container Platforms, Q1 2022 ...

  5. 2021 阿里云容器服务年度盘点:企业级容器应用变化和技术趋势观察

    作者:溪洋 在云原生浪潮的推动下,容器和 Kubernetes 技术和应用发展迅猛.最近,云原生计算基金会 CNCF 发布了与 SlashData 联手撰写的 最新版<云原生开发现状报告> ...

  6. 阿里云容器服务多项重磅发布:高效智能、安全无界的新一代平台

    在云原生带来的云计算未来趋势下,容器已经成为用户使用云的新界面. 阿里云容器产品发布近 7 年以来,已成长发展为企业的云原生操作系统,技术和服务能力日趋成熟,但创新从未止步.日前,阿里云研究员 &am ...

  7. 「更高更快更稳」,看阿里巴巴如何修炼容器服务「内外功」

    作者 | 守辰.志敏 来源|阿里巴巴云原生公众号 11 月 11 日零点刚过 26 秒,阿里云再一次抗住了全球最大的流量洪峰.今年 双11 是阿里经济体核心系统全面云原生化的一年,相比去年核心系统的上 ...

  8. 容器服务kubernetes弹性伸缩高级用法

    前言 近期,阿里云容器服务kubernetes发布了cluster-autoscaler的支持,开发者可以通过页面简单快捷的配置节点的弹性伸缩,支持普通实例.GPU实例以及竞价实例帮助开发者实现架构弹 ...

  9. 华为云从入门到实战 | 云容器服务

    以WordPress应用为例介绍云容器服务的部署与实施. 本文将以运行一个WordPress+MySQL的博客系统为例,使用云控制台创建负载的方式演示如何部署和应用容器实例服务.WordPress需配 ...

  10. 阿里云十年铸「器」,容器服务迈入智能化时代

    在成为云计算新界面之后,智能化再次成为容器服务一个重要发展方向. 国际权威咨询机构Forrester在今年发布的<The Forrester WaveTM: Public Cloud Conta ...

最新文章

  1. 【Error】InterfaceError (0, '')
  2. 安装fiddler做代理,本地开发手机端看效果
  3. 设计模式(一) 策略模式
  4. .NET中的字符串你了解多少?
  5. xml突然变成空白_“侏罗纪中期”出现了型增转变填补食肉性恐龙体型发展当中的空白...
  6. Centos7 Git源码安装
  7. python获得当前目录_python如何获取当前工程根目录
  8. 给年薪不到48w的程序员提个醒!!
  9. 『004』索引-Python
  10. Query全选全不选第二次失效问题解决办法
  11. VSCODE原装1.7版本百度网盘download
  12. 数字化转型的本质:“研产供销服”各环节的敏捷化
  13. 移动机器人运动控制算法入门
  14. python+opencv移动侦测(帧差法)
  15. 二维数组/三维数组 定义
  16. 如何查看网站服务器的速度,如何测试网站服务器访问速度?
  17. 什么是服务器?服务器是用来做什么的?
  18. 2017(第六届)国际智慧城市峰会暨智慧城市新科技博览会在沪召开
  19. 第四篇:UE4视角切换节点,Possess和Set View Target With Blend的区别
  20. 突然断电对oracle的影响吗,当ORACLE突然断电,重新启动过程发生了哪些事?

热门文章

  1. EyouCms前台GetShell漏洞复现
  2. 阿里百度腾讯facebookMicrosoftGoogle开源项目汇总
  3. oracle年龄计算函数
  4. 计算机毕业设计抄袭,研究生毕业设计抄袭他人作品,通报来了!
  5. Redis入门学习笔记--附Redis工具类
  6. python3 scrapy中文文档_如何用python3创建scrapy项目
  7. PHP合并在线电影ts格式视频文件
  8. mtouch 3d gis,m3dgis,mtgis,mgis 多点触摸三维电子沙盘可视化交互系统教程第17课
  9. OBS Studio是一款非常专业的视频直播录制软件,完全免费
  10. matlab 单元数组输入,Matlab 单元数组