既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
1,什么是Docker
1.1:项目部署的问题
大型项目组件较多,运行环境也较为复杂,就像一个项目前端需要用到node.js组件,后端需要用到数据库,缓存技术redis,异步技术MQ等等!!同时也会在部署的时候碰到一些问题:
1:依赖关系复杂,容易出现兼容性问题(就像下图中的这些node,Redis这些技术应用等等!将来都会部署到服务器中,而大多数服务器都会采用LInux操作系统,而这些技术应用在安装到Linux操作系统之前需要做一些准备工作。每个应用都有自己需要的依赖和函数库,而每个应用的依赖和函数库又有可能存在一定的差异性,例如版本问题,一个项目涉及很多的应用都有自己的版本难免会发生冲突,这样就会非常容易出现兼容性问题。)
**2:开发,测试,生产环境有差异(**这个就是说:部署的兼容性解决了你部署的成功了运行环境搞定了,**但是开发环境,生产环境,预发布环境还需要等着你去搞定,更麻烦的是这些操作环境它们的操作系统还有可能不同,你在一个Windows系统中把开发环境配置好了,换到另外一个操作系统中还能正常运行吗?**所以存在环境差异的问题)
1.2:Docker如何解决依赖的兼容问题的?
- 将应用的Libs(函数库),Deps(依赖)配置与应用一起打包。(假如数据库应用需要部署,Docker技术直接把该应用所需要的函数库和依赖的一些配置和应用一起打包然后放入一个该应用的独立容器,每个应用都这样打包放入,到时候部署时候不就避免了依赖冲突等等嘛!)
- 将每个应用放到一个隔离容器去运行,避免互相干扰(可能有人存在这样的问题,把这些打包好的包扔到一个服务器上面难道不会有干扰吗?不会,因为Docker会用隔离的容器进行运行,已经一种沙箱技术什么意思呢!就是这些容器都不见,这样不就避免了干扰了嘛!)
但是仅限于同一个操作系统中
1.3:Docker解决跨系统环境差异
1.3.1:以Ubuntu为例操作系统结构(结构如下):
结构包括:
- 计算机硬件:例如CPU、内存、磁盘等
- 系统内核:所有Linux发行版的内核都是Linux,例如CentOS、Ubuntu、Fedora等。内核可以与计算机硬件交互,对外提供内核指令,用于操作计算机硬件。
- 系统应用:操作系统本身提供的应用、函数库。这些函数库是对内核指令的封装,使用更加方便。
其实所有的以Linux内核的操作系统都可以分为两层,一层是Linux内核,一层就是系统应用,区别就是上层的系统应用不同。
举个例子:Ubuntu和CentOSpringBoot都是基于Linux内核,无非是系统应用不同,提供的函数库有差异:
此时,如果将一个Ubuntu版本的MySQL应用安装到CentOS系统中去,MySQL在调用Ubuntu函数库时,会发现在CentOS系统中找不到函数库或者函数库找不到,就会报错了:
Docker如何解决不同系统环境的问题?
- 既然每个应用都依赖系统函数库,Docker说了那我直接把系统函数库一起打包,这样就不愁找不到函数库了
- Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
如图:
1.3.2:内核是干什么用的?
内核负责与计算机硬件进行交互,比方说**调用个cpu,调用内存什么,查看个软件进程等等这些都是内核需要做的事情,而内核会把这些事情变成一个个的指令,调用指令进行操作计算机硬件,但是这些指令大多数比较简陋,**如果基于这些指令开发应用太麻烦了。所以我们就有了系统,
1.3.3:系统应用它又干了什么呢?
它会将内核的指令进行封装形成函数,许许多多的函数形成了函数库,像咱们程序员可以基于函数库进行开发,程序调用我们的函数库,函数库调用内核的指令,指令调用计算机硬件从而实现应用的执行,这就是Linux系统的结构以及应用的组成原理
1.4:小结
Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
- Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
- Docker应用运行在容器中,使用沙箱机制,相互隔离
Docker如何解决开发、测试、生产环境有差异的问题?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
4f45ff00ff254613a03fab5e56a57acb)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!