聊聊云计算:5分钟弄清楚我们为什么需要容器

转载 2018年04月16日 19:54:55

原始文章地址:

http://mini.eastday.com/bdmip/171230120731365.html?qid=bdgfh&idx=4&fr=http://mini.eastday.com/bdmip/180103191329488.html&recommendtype=e&pgnum=1


除了云主机,不少应用也部署在容器里面。容器云服务也是现在云服务商的主要业务,阿里云、腾讯云等都会提供相应的容器服务。那么,我们为什么需要容器呢?

我们经常会遇到这样的问题:

1 程序在我这儿跑得好好的,怎么到你那里就不行了?

2 系统好卡,是哪个进程把CPU给吃光了?

3 这套系统我已经搭建好了,要不你再重新搭建一遍?

相信这些问题,大家平常都会遇到。容器技术是帮助我们解决这些问题的好办法。那么容器究竟是什么呢?

容器技术是这些问题的最佳解决方案

容器也是一种虚拟化技术,与虚拟机不同之处在于,虚拟机是硬件虚拟化(Hypervisor的作用),容器是对操作系统虚拟化。

虚拟机本身是不带有操作系统的,在虚拟机上部署应用时,还需要安装操作系统(一般是通过虚拟机镜像)以及其他需要的执行环境,如Tomcat等。

容器把应用以及应用的执行环境打包在一起。部署应用的时候,直接整个容器进行部署。因为容器自带应用执行环境,所以就不存在部署过程中由于环境变化,导致应用出现部署异常,可以说是“一次构建,到处执行”。

虚拟机 VS 容器

从头在虚拟机或物理机上搭建一遍环境,包括安装程序以及配置脚本,往往是非常麻烦的事情。相比于虚拟机(云主机),利用(云)容器来部署应用要更方便。

总结起来,容器有三大特点:容器内部的东西是不可变的相比虚拟机更轻量级,可以实现秒级启动,容器可以运行在物理机上,也可以在虚拟机上。创建速度快,不需要复杂的环境配置

目前最常用的容器就是就是Docker,以至于大家一谈到容器,一般默认就认为是Docker。那么Docker技术与容器有什么关系呢?Docker究竟是什么?

容器技术其实已经出现十多年了,Linux2.6版本就已经支持LXC。而Docker技术的最早0.1版本直到2013年才出现,现在已经成为云计算领域一个非常常用的技术了。

Docker是以容器技术为核心的一套应用构建、部署和执行的技术体系。其中包括了Docker Daemon守护进程、Docker Container容器、Docker Client客户端以及Docker Image镜像等。

Docker守护进程本身就是一个普通的应用进程,不过是用来操作Docker镜像文件的。Docker守护进程与镜像文件一起就组成了Docker容器。

Docker容器、守护进程与镜像的关系

那这个Docker镜像文件(Docker File)里面有什么呢?Docker镜像和虚拟机快照(镜像文件)类似,分不同的层级,比如有基础镜像,仅仅包含操作系统,比如CentOS镜像;有中间件镜像,比如redis数据库镜像;还有应用镜像,就是指含有具体的应用服务的镜像了。

Docker如何部署应用

当我们需要部署应用的时候,可以从镜像中创建容器,这如同从快照中创建虚拟机,不过更轻量,启动更快,秒启。

应用是在容器中运行的。比如我们要通过容器部署一个应用:首先下载了一个Ubuntu的镜像;然后又安装mysql和Django应用及其依赖,来完成对它Ubutun镜像的修改;最后通过这个镜像生成一个容器;容器启动之后就会运行Django服务了。

容器不是完全封闭的,也需要对外提供服务,所以Docker允许公开容器的特定端口。

在启动Docker的时候,我们就可以将容器的特定端口映射到宿主机上面的任意一个端口。如果一个宿主机(虚拟机或物理机)上面要部署多个Docker容器,而且几个服务都需要80端口,那么容器的对外端口都是80,但是映射到宿主机上面就可以是任意端口,不会产生冲突。基于Docker仓库的工作流程

Docker仓库(Registry)是用来存放Docker镜像的地方。仓库存在公有和私有之分,公有仓库docker hub提供了非常多的镜像文件,这些镜像直接拉取下来就可以运行了。

我们也可以上传自己的镜像到docker hub上,同时也可以自己搭建私有仓库用于团队项目管理。

基于Docker仓库的开发运维工作流程

基于Docker仓库,整个开发团队的DevOp工作流程大致是这样的:

开发人员构建镜像并将镜像提交到Docker仓库;测试人员从Docker仓库拷贝镜像到测试环境进行测试;运维人员从Docker仓库拷贝镜像部署到生产环境,通过镜像开启容器并对外提供服务








开发人员需要掌握的HTML和CSS知识

作为一个软件开发人员,需要掌握的HTML和CSS的知识。
  • 2015年04月11日 21:54

认识spark

认识spark Spark 是一个用来实现快速而通用的集群计算的平台。 在速度方面,Spark 扩展了广泛使用的MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。在处...
  • qq_26583415
  • qq_26583415
  • 2017-01-21 17:17:45
  • 213

写在最前面 - 每天5分钟玩转容器技术(1)

《每天5分钟玩转容器技术》这个教程的目的、内容和形式。
  • CloudMan6
  • CloudMan6
  • 2017-04-12 07:17:26
  • 6086

弯道超车:容器技术究竟为云计算带来了什么?

这两年容器技术及其相关工具,平台异常火爆。在各大技术论坛或云计算峰会议题中,都会占很大比重,各主流云计算平台也无一例外地迅速提供了容器服务。从2014年或更早,就有专家预见到Docker/容器技术会是...
  • Yan_Dalai
  • Yan_Dalai
  • 2016-02-21 12:58:46
  • 1612

每天5分钟玩转Docker容器技术(完整版)

  • 2018年01月28日 16:53
  • 402.43MB
  • 下载

每天5分钟玩转Docker容器技术

  • 2017年10月27日 20:52
  • 49B
  • 下载

【云计算】Docker与容器快速入门

Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题、怎么解决的、用什么技术解决的都还没想清楚的时候就去探索docker组件...
  • audioo1
  • audioo1
  • 2016-01-03 00:09:07
  • 1370

每天5分钟玩转Docker容器技术.CloudMan(带详细书签) PDF 完整版

  • 2018年02月03日 19:35
  • 40.12MB
  • 下载

云计算的意义与选择

云计算降低了创业门槛,提高了生产力。最耳熟能详的故事就是Instagram利用Amazon云服务来实现其架构。在2012年8月,其每日活跃用户已超过老牌网站Twitter。据称,在这么大的一个系统中仅...
  • yafei450225664
  • yafei450225664
  • 2012-12-20 14:19:21
  • 820

【云计算虚拟化】Docker的基本命令使用

一、系统相关命令:1.1 查看docker 的版本信息:docker version 1.2 查看docker 系统信息:docker info 二、镜像相关的命令:2.1 搜索镜像:docker...
  • chenriwei2
  • chenriwei2
  • 2015-12-10 16:04:42
  • 7001
收藏助手
不良信息举报
您举报文章:聊聊云计算:5分钟弄清楚我们为什么需要容器
举报原因:
原因补充:

(最多只允许输入30个字)