云计算概述
云计算是一种能够跨网络、按需提供基础架构、服务、平台和应用的交付方式,正在快速取代原本通过硬布线连接进行资源共享的方式。
云计算的服务类型
基础设施即服务(Infrastructure As A Service,简称"IAAS")
平台即服务(Platform As A Service,简称"PAAS")
软件即服务(Software As A Service,简称"SAAS")
什么是容器?
- 所谓的容器技术就是能够将计算机的程序及其所依赖的库进行打包的一种技术手段。方便进行传输,运行,部署。
- 如下图所示,容器可以实现帮我们将程序和其所依赖的库文件进行打包。
Docker容器技术简介
- 官网:https://www.docker.com/
- 文档地址:https://docs.docker.com/
- 仓库地址:https://hub.docker.com/
- Docker是一个开源项目,诞生与2013年初,由Docker公司(前dotCloud公司,PaaS市场中的老牌提供商)的团队编写,最初是dotCloud公司内部的一个业余项目,整个程序是基于google公司推出的Go语言实现。
Docker解决了什么问题?
Docker的思想来自于集装箱,集装箱解决了什么问题?
-
在一艘大船上,可以把货物规整的摆放起来,并且各种各样的货物被装在集装箱里,集装箱和集装箱之间不会互相影响。
-
那么我就不需要专门运送蔬菜的船和专门运送货物的船了。
-
只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
-
简而言之:可以轻松的为应用创建一个轻量级的、可移植的、自给自足的容器环境。
Docker容器技术优势
-
简单轻量的建模:
Docker上手非常快,用户只需要几分钟,就可以把自己的程序“Docker化”。
-
职责的逻辑分离:
使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。
-
快速高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。
-
鼓励使用面向服务的架构
Docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型
-
对于开发人员:build once 、run anywhere(创建一次,到处运行)
-
对于运维人员:configure once 、run anything (配置一次,运行所有)
Docker VS 虚拟技术
比较类型 | 虚拟机 | 容器 |
---|---|---|
启动速度 | 分钟级别 | 秒级 |
部署服务的系统开销 | 开销大,1台单机能够虚拟化10台虚拟机 | 开销小,同样配置,1台单机能够启动100+个容器 |
镜像大小 | 最小化安装的镜像接近1GB | 最小的busybox镜像仅1.2MB |
移植性 | 对硬件和操作系统有一定的依赖 | 只需要能够部署docker环境即可 |
隔离型 | 完全虚拟化,其隔离型很强 | 进程及虚拟化,隔离型较差 |
操作系统 | Linux,Mac,Window | 主要支持"Linux"系统上服务容器化。 |
容器技术
-
是隔离的环境中运行的一个进程,如果容器对应的进程结束,容器就会随之停止;
-
容器在隔离环境中,拥有自己的IP地址、系统文件、主机名称、进程管理等信息;
-
容器不需要物理硬件CPU的支持,是共用宿主机内核,启动容器环境并运行容器中的进程
-
容器环境启动流程较快,运行性能较高,资源损耗较小,属于比较轻量级的服务。
虚拟技术
-
需要物理主机CPU支持(虚拟化),并且虚拟主机是模拟计算机硬件运行的环境,会正常有开启运行启动流程;
-
虚拟主机启动流程较慢,运行性能较低,资源损耗较大,属于比较重量级的服务。