一、概述
1.案例
远洋运输案例:生活案例
- 需求:远洋运输以下商品,要求保证产品安全同时要高效完成运输
- 西瓜问题:
汽车放在了西瓜上,钢筋放在了玻璃杯上,汽车放在了钢琴上,是有放在了服务器上… - 运输方案:
将汽车,香蕉,钢琴,玻璃杯等产品装入集装箱,然后将集装箱装运到港口码头,将集装箱状图货运船只完成运输。
服务开发运行案例:实际工作案例
- 需求:在服务器上完成一个普通的web项目的部署,该项目同时使用到了缓存和数据库;后期服务会有扩展可能。
- 西瓜问题:
部署web服务需要安装jdk,tomcat/jetty等服务,如果忘记将导致服务无法启动… - 原始化部署方案:
1).单机部署方案
2).集群化部署
3). 其他问题:
A.服务安装问题:安装jdk,tomcat,nginx,redis,mysql等服务繁琐且容易出错,案例
B.资源占用问题:硬件资源浪费
C.服务扩展问题:服务集群化扩展困难,风险高。 - Docker部署方案
1).单应用版部署方案
2).集群部署方案:
3).docker对问题的解决
A.服务安装问题:容器初始化安全,简单,快捷。案例
B.资源占用问题:可以充分利用硬件资源,避免硬件资源浪费
C.服务扩展问题:服务集群化扩展简单,风险低。
2.容器
什么是容器:
- 容器定义:
容器是一种轻量级、可移植、自包含的软件打包技术;是应用程序可以在几乎任何地方以相同的方式运行。开发人员创建并测试好的容器,无需任何修改就可以在生产环境的系统(物理机、虚拟机、云主机)上运行。 - 容器特性
A. 打包技术:可以将任何软件和依赖打包进一个容器中。
B. 可移植:不需要修改就可以在所有平台上使用(前提是目标及其安装了docker engine)
C. 高效化:能够快速启动和迁移
D. 隔离性:资源、网络、库等都是隔离的,不会出现依赖问题。
E. 方便管理:提供了针对容器的run、start、stop等标准化操作,方便自动话和管理。
F. 分工明确:开发只注重业务开发,运维只注重基础的环境管理。
为什么使用容器
- 开发人员
创建一次运行环境,打包成容器(镜像)后就可以在任何地方运行了。 - 运维人员
只要配置好标准的running(部署了docker engine)环境,就可以运行开发人员开发的任何容器;这对运维人员来说工作变得一致,可重复,同时也意味着高效。