.认识Docker1.1 什么是Docker1-Docker解决依赖兼容Docker为了解决依赖的兼容问题的,采用了两个手段: 【依赖打包】将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包 【部署隔离】将每个应用放到一个隔离容器去运行,避免互相干扰 此时打包好的应用包(不再是原来的jar包)既包含应用本身,也包含应用所需的Libs、Deps,无需在操作系统上安装,自然不存在应用间的兼容问题。虽然解决了不同应用的兼容问题,但是开发、测试等多个环境,不同的操作系统版本之间也会有差异,这个不解决一样会面临开篇所说的问题,想了解这个必须先了解下操作系统的结构。2-Docker解决操作系统环境差异以一个ubuntu操作系统为例,如下:其结构包括:计算机硬件:如CPU、内存、磁盘等系统内核:所有Linux发行版内核都是Linux,如CentOS/Ubuntu/Fedora等,内核与计算机硬件交互,对外提供内核指令,用于操作计算机硬件。系统应用:操作系统本身提供的应用、函数库。这些函数是对内核指令的封装,使用更方便。应用与计算机交互的流程大致如下:应用(外部应用如redis/web应用等)调用操作系统应用(函数库),实现各种功能系统函数库是对内核指令集的封装,会调用内核指令内核指令操作计算机硬件如Ubuntu和CenOS虽然都是基于Linux内核,无非是系统应用不同,提供函数库有差异,如下:但就是这种差异,当一个Ubuntu版本的MySQL尝试安装到CentOS系统时,MySQL还是调用的Ubuntu函数库,会出现找不到或者不匹配的情况,从而导致报错,即出现我们上面提到的系统环境差异导致的不兼容问题:我们来看下Docker是如何处理这种环境间的差异的:Docker将应用程序与所需调用的系统(如Ubuntu)函数库一起打包Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统Linux内核来运行3-小结Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离