什么是容器化技术
应用部署演化主要分为三个阶段:
- 物理机时代
- 虚拟机时代
- 容器化时代
物理机时代
![file](https://yangsx95.com/wp-content/uploads/2020/01/image-1578384393788.png)
- 经济成本较高:物理服务器硬件成本高,不易于维护
- 受制于硬件:内存、CPU能力提升有限
- 部署成本较高:主机存放、系统安装、程序环境、应用部署多个步骤
- 资源浪费:应用对硬件的要求不一,可能造成磁盘浪费,或者是cpu的浪费
- 难于扩展和迁移:比如增加内存、主机迁移、操作系统更换等
虚拟化时代
![file](https://yangsx95.com/wp-content/uploads/2020/01/image-1578385033313.png)
相比较物理机,虚拟化可以让物理机的资源得到最充分的应用。多个虚拟机运行在同一个物理机上。常用的虚拟化软件有VMware、KVM等。
- 多部署:一台物理机可以创建多个虚拟机
- 资源池:物理机的硬件资源被Hypervisor抽象为一个资源池,资源池中的资源可以被动态分配给每个虚拟机
- 资源隔离: 每个虚拟机的资源都是独立的,有自己的软件和硬件资源,不会相互影响
- 很容易扩展:资源可被随时扩展和缩减(比如给VM1分配2核2g内存),虚拟机可以随时创建
- VM需要安装操作系统:较小的应用部署在一个VM上,会造成操作系统层面的资源浪费
容器化时代
![file](https://yangsx95.com/wp-content/uploads/2020/01/image-1578449108319.png)
相较于虚拟机,容器不会打包操作系统,所以每个容器所占用的资源是变小的。容器底层依赖于容器化引擎(比如Docker),而Docker引擎则直接依赖宿主机操作系统。
- 虚拟化是物理层面的隔离,比如内存大小分配等
- 容器是在APP层面的隔离,他们共享物理资源
容器化解决的问题
容器化技术的产生,让软件开发的协作方式也发生了变化。传统上,一个应用程序的上线过程是极其繁杂的,需要开发人员和运维人员配合进行。开发人员需要将要上线的程序打包、将数据库数据导出、以及各种参数以及配置文件交给运维人员。运维人员会根据配置文档将环境搭建起来并部署应用程序。如果有任意一个步骤出现问题,就可能导致严重的上线问题。而有了容器之后,开发人员可以将应用程序、环境、配置都打包为一个容器,再交给运维人员,这样就不会再出现问题了。同时,容器化技术提供了标准化的应用部署方案,运维人员只需要通过容器编排工具,就可以很方便的将应用程序发布到各个集群的节点上;不仅如此,还提供了容器管理工具,便于运维人员监控和修复。
![file](https://yangsx95.com/wp-content/uploads/2020/01/image-1578464520896.png)
- 标准化的迁移方式:开发将程序所需的所有环境打包到镜像中,将镜像交给运维处理
- 统一参数配置:可对应用程序参数进行统一管理
- 自动化部署:镜像 > 容器的过程都是自动进行的
- 应用集群监控:通过监控方便了解程序的运行状态以及集群状态
- 是开发和运维之间沟通的桥梁
什么是Docker
![file](https://yangsx95.com/wp-content/uploads/2020/01/image-1578549091464.png)
- Docker是一款开源的容器引擎,基于Go语言开发。
- 容器是完全使用沙箱机制,容器开销极低
- Docker就是容器化技术的代名词
- Docker是一个平台(鲸鱼),多个容器(集装箱)可以运行在Docker平台上
Docker相关文档
其中包含了安装文档。