当前位置: 首页 > news >正文

学习番外:Docker和K8S理解

场景一:程序员A写的程序代码基于Linux操作系统,且在开发环境中设置好了依赖项和配置。此时他需要将自己的代码部署到Centos操作系统的空白服务器,他要面临两个问题,第一,操作系统不一致如何保证代码可以运行?第二,部署在新的服务器上又需要各种依赖项和配置,太麻烦了。

场景二:程序员A写了一个程序并成功运行,程序员B想直接在A的基础上继续开发,结果当B获得A的代码之后发现在他自己的环境中无法运行。
首先要弄明白这个环境是什么?环境其实就是操作系统和程序代码所需要的依赖库以及各种配置。

以上两个场景都可以归结为:程序代码开发运行部署过程中怎样弱化依赖项和配置与操作系统影响?

解决思路为:程序和环境一起打包,给到其他运行服务器。

由此,Docker就诞生了,Docker就是这样一款可以将程序和环境打包的工具软件。

那么它具体是怎么实现的呢?

首先构建基础镜像Base image,操作系统分为用户空间和内核空间,而程序运行在用户空间,为了轻量化直接阉割操作系统取用户空间,以及对应操作系统的文件系统和依赖库,这三者形成基础镜像。
为了简化部署过程中安装各项依赖以及配置的操作,编写Dockerfile将各操作提前写好后直接运行docker build进行构建即可安装好环境与代码。

但是又会面临一个问题:如果有很多服务器要部署,是否每次都是本机做好镜像后传送镜像和Dockerfile给各服务器呢?如果服务器非常多,很考验本机的网络带宽。于是,参考github做法,可以基于Docker Registroy的能力建立镜像仓库,比如官方镜像仓库Docker Hub,非官方仓库如清华的镜像仓库Tuna等。

目的服务器从镜像仓库拉取镜像之后运行,这样的程序代码以及环境运行起来了就形成容器。

程序员写了很多容器用来存储相关的服务,比如他写了一个博客系统,主要有三个容器,分别为数据库服务、身份验证服务、博客Web服务,但是这三个容器启动的顺序是有要求的,要先启动数据库服务再启动身份验证服务最后再启动博客Web服务。
这个场景要解决的问题就是一套服务的多个容器在一个服务器上的部署问题。为了方便管理容器部署顺序以及给各容器分配内存计算资源等,一般写一个yaml文件对此信息进行统一管理,也就是Docker Compose功能。

利用Docker Compose功能,这个程序员终于将一套服务部署在一个服务器上了,此时他又遇到一个问题,由于这个服务器时不时会宕机且他的应用程序太火爆了访问的人数很多,部署在一台服务器已经无法满足高可用的要求了,于是他想着将此服务部署在多台服务器上形成灾备和高可用。此时他又面临一个问题,每一台服务器都手动去部署吗,他如何实现一台服务器宕机时立马转移到另一台服务器上?这个场景要解决的问题就是,应用程序在服务器集群部署并且实现实时迁移和动态扩缩容。要解决这个问题可以使用Docker swarm,它是对一整套服务在多个服务器集群进行部署且实现实时迁移和动态扩缩容的工具。而其实,这也是K8S的功能,即容器编排引擎。

说到这里终于引出了K8S,其实K8S的Pod实际是多个Container组成的一整套服务,K8S通过控制平面的管理节点来编排管理调度Node节点的多个Pod的过程,就相当于Docker swarm的功能。

学到这里,终于可以自信得说自己对一些概念的理解了!下一篇文章我将以一个程序员的视角来将这些概念串联起来,通过讲清楚遇到的困境以及对应的解决方法来将各个知识串联起来。请关注我!


文章转载自:

http://1KWnMO8w.kxnnh.cn
http://duKe5bCo.kxnnh.cn
http://xvMeCqeR.kxnnh.cn
http://nA6O7wsa.kxnnh.cn
http://aqeDLzox.kxnnh.cn
http://HSR4kxxA.kxnnh.cn
http://5NiGM3rx.kxnnh.cn
http://1oBuv6Bn.kxnnh.cn
http://n3NXdu6O.kxnnh.cn
http://6QcOUd99.kxnnh.cn
http://OFcOWclG.kxnnh.cn
http://jgdM3pjJ.kxnnh.cn
http://JjNtPpGe.kxnnh.cn
http://GBJWxHHj.kxnnh.cn
http://czJxWF54.kxnnh.cn
http://ljcgC8gB.kxnnh.cn
http://xBEfizPA.kxnnh.cn
http://dIhrlCcd.kxnnh.cn
http://w5uG8Tnv.kxnnh.cn
http://NvdMafAu.kxnnh.cn
http://pfBozUeJ.kxnnh.cn
http://rdeGeWBQ.kxnnh.cn
http://UTHgrwC3.kxnnh.cn
http://KntACBmS.kxnnh.cn
http://dmzSh424.kxnnh.cn
http://0nMdeRsS.kxnnh.cn
http://RbKeB0WP.kxnnh.cn
http://kn9J4iwM.kxnnh.cn
http://ep3NMpDA.kxnnh.cn
http://K5WaN7Os.kxnnh.cn
http://www.dtcms.com/a/378790.html

相关文章:

  • Leetcode 刷题记录 21 —— 技巧
  • 卷积神经网络CNN-part5-NiN
  • 散斑深度相机原理
  • 中元的星问
  • 使用 NumPy 读取平面点集并分离列数据
  • uni-app + Vue3 开发展示 echarts 图表
  • uni-app 网络请求封装实战:打造高效、可维护的HTTP请求框架
  • AppTest邀请测试测试流程
  • C#地方门户网站 基于NET6.0、Admin.NET,uniapp,vue3,elementplus开源的地方门户网站项目
  • 苹果上架全流程详解,iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传与审核要点完整指南
  • PyTorch之张量创建与运算
  • Python爬虫实战:研究GUI 可视化界面,构建电商数据采集和分析系统
  • 对浏览器事件机制的理解
  • JavaWeb05
  • 浅聊一下ThreadLocal
  • 部署大模型的极简笔记
  • linux面试题记录
  • 深度解码OpenAI的2025野心:Codex重生与GPT-5 APIKey获取调用示例
  • 文献阅读笔记:脉冲神经网络最新文献合集-IV
  • STM32学习路线开启篇:芯片简介与课程简介
  • 第七章 ELK Stack高级应用与集成
  • 认识跨平台UI框架Flutter和MAUI区别,如何选。
  • 9.11-QT-QT的基本使用
  • 线程安全相关的注解
  • [超表面论文快讯-242] PR-微波超四元数涡旋阵列洛书加权锁定成像加密-江南大学王继成、上海科技大学王雄团队
  • 质量特性工程
  • 性能测试-jmeter10-分布式测试
  • Java中方法重写与重载的区别
  • 【代码随想录算法训练营——Day9】字符串——151.翻转字符串里的单词、卡码网:55.右旋转字符串、28.实现 strStr()、459.重复的子字符串
  • 少儿舞蹈小程序(13)作品播放量累加及点赞