云原生k8s的前世今生--Docker

news2025/7/13 17:13:21

        不可修改(immutability)和幂等性(idempotent)是一致依赖困扰软件发布与运维的两个难题。以nodejs等解析执行的应用而言,如何控制发布后的软件不被修改运行,发布后,经常发现因为运行环境差异导致各种水土不服:比如应用程序对底层操作系统库、基础程序等的依赖,这种跨产品边界的依赖,尤其对于多产品部署环境更为复杂,一不留神就可能因为某一软件的升级导致自己产品的功能不工作。于是运维人员对任何产品的升级都谨小慎微,需要严格验证每一款产品的升级,询问每个租户的具体要求,维护一张复杂的依赖关系图。 即便如此,部署的复杂度,导致产品的升级运维都是一项开销最大的软件活动:产品运维人员首当其冲,客户方运维人员,主程或相干得力干将大概率也得坐镇三方,项目负责人员等都参与其中。通常还要挑一些相对业务闲时,比如深更半夜偷偷摸摸地升级,最大可能让客户感觉不到服务端的升级。

        没有梦想的运维和开发,人生函数不可能有诗和远方返回,只有无穷无尽的加班和根因分析(RCA)。 软件的不可修改性和幂等性就成为运维人员一直追求的梦想。

         Docker容器技术毫无疑问是支撑这个梦想的中流砥柱。

Docker容器技术的3个核心概念

       Docker容器最大的发明,是“容器镜像”创造性打包技术。这个让Linux容器技术得以风靡全球。无论后续容器技术如何演进,这个无疑是打开容器文明的一把火,照亮了算力作为公共资源的未来路。即便未来Docker不在江湖,江湖上还会有Docker的传说。

       想知道Docker哥长啥样吗?请看他的官方玉照。

         技术层面上,Docker容器技术有3个核心概念:容器(container)、镜像(image)和镜像仓库(Docker Registry)。容器相当于进程,镜像就像是静态运行程序(比如exe,rpm,jar, etc)以及相应的打包配置和环境参数文件,镜像仓库类似软件的分发仓库(比如zypper repo,etc)。

容器分层存储

        Docker镜像是由一层层的Docker file指令系列构成,新的一层用于构建基于上一层的差异。

可堆叠层(overlay layer)

写时复制(copy on write)

镜像是静态不可修改的,容器作为镜像的运行实体,它有一可写层,所有新增或修改数据都在最上面的可写层。这层是热数据,容器删除的话,数据作为容器的一部分也香消玉损了。轻轻的我走了,不带走一片云彩,这就是容器的使命。

镜像层除了隔离之外,还有就是基于同样镜像层的多个容器之间是共享底层公共层的,是共享的。比如运行于操作系统之上的容器应用,他们都共享操作系统的内核。

镜像分阶段构建机制

        构建阶段通常需要一些额外的工具,以及构建依赖的一些库,同时构建过程中不可避免地产生一些临时文件。而Dockerfile自身相对精简,这些临时文件的生成对于Dockerfile而言通常是透明,很难去追踪,如果直接通过构建镜像导出目标镜像,将使得镜像过于肥胖。除此之外,这些额外的依赖和工具,也会给镜像留下一些隐藏的安全漏洞。

        解决这类问题简单明了,分步解决。用一个构建镜像去生成目标文件,接着把目标文件复制到最小的基础镜像里。永远不要想去清理一个环境,直接用一个干净的环境去达成目标,直接目标导向。

容器桥接网络 

容器的overlay网络

src: 100.96.1.2 -> dst: 100.96.2.3

Docker cheatsheet

微服务和Docker容器架构模式

        看上去一个容器一个微服务,如果对应的应用是一家豪华酒店,房间就是一个个的容器,客服就是对应的微服务,不同的客服对应不同的微服务,餐厅,对应餐饮服务,大厅对应接待服务等等。 可以想象一下,如何才能运作这样一家庞大的酒店呢?只有房间和服务,貌似还不足以灵活应对类似黄金周,节假日的高峰客流量,且能协调管理淡季的资源管理,整体上开源节流,实现酒店的最大化效益。是不是觉得酒店管理和协调就是酒店运行的中枢?

        容器技术怎样落地到生产呢?请看下图。那谁是容器管理和协调的中枢呢?且听下回分解。

Reference

Docker overview | Docker Documentation

Microservices and Docker containers: Architecture, Patterns and Development guidance (Updated for .NET Core 2.0) - .NET Blog Docker network - Binary Maps

Multi-Host Overlay Networking with Etcd — Docker Kubernetes Lab 0.1 documentation

https://blog.laputa.io/kubernetes-flannel-networking-6a1cb1f8ec7cDocker Commands Cheat Sheet {With Downloadable PDF} | PhoenixNAP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++数据结构】渐近记法

渐近记法 3.1 引言 考察程序的操作计数和执行步数有两个重要的原因: 1)预测程序运行时间如何随着实例特征的变化而变化; 2)对两个功能相同的程序,比较它们的时间复杂度。 存在问题: 在使用操作计数时,我们关注的…

Vue生命周期--Vue实例创建过程详解

每个Vue实例在被创建时都要经过一系列的初始化过程--例如,需要设置数据监听、编译模板、将实例挂载到DOM并在数据变化时更新DOM等。同时在这个过程中也会运行一些叫做 生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。 生命周期图示&…

Linux入侵排查

Linux入侵排查 实验内容 当系统被黑客入侵、需短时间查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施。以下给出一些入侵排查思路 netstat -antpl 查看当前端口状态是LISTEN的端口 针对对外开放的端口,查看日志 先查看ssh爆破的…

OpenGL ES 学习(三) -- 绘制平面图形

上一章中,已经对 OpenGL 的编程语言 GLSL 和渲染模式有了一定的了解,今天,将运用之前的知识,完成一些平面图形的操作。效果如下: 如果你对 OpenGL 的基本概念或者渲染流程不清晰,建议先看 OpenGL ES 学习…

D. Insert a Progression(绝对值的性质)

Problem - 1671D - Codeforces 给你一个n个整数的序列a1,a2,...,an。你还得到了x个整数1,2,...,x。 每个整数可以插入序列的开头,也可以插入序列的结尾,或者插入序列的任何元素之间。 所得序列a′的得分是其中相邻元素的绝对差异之和(∑i1n…

实验跟踪

管理和跟踪机器学习实验。 Intuition 到目前为止,一直在训练和评估不同的基线,但还没有真正跟踪这些实验。将解决这个问题,但定义一个适当的实验跟踪过程,将用于所有未来的实验(包括超参数优化)。实验跟踪是…

【JavaWeb】CookieSession

文章目录一.Cookie❤️1.Cookie的概念2.创建Cookie3.获取Cookie4.修改Cookie的值5.Cookie的生命周期控制6.Cookie有效路径Path的设置7.免输入用户名登录二.Session❤️1.session的概念2.Session的创建和获取3.Session域数据的存取4.Session的生命周期控制5.浏览器和Session之间…

pytorch深度学习实战lesson28

第二十八课 resnet的梯度计算(如何缓解梯度问题) 沐神说:“假设你在卷积神经网络里面,只要了解一个神经网络的话,你就了解 rest net 就行了。 rest net 是一个很简单的也是很好用的一个网络。这也是大家会经常在实际中…

OpenCV-Python小应用(六):车道线检测

OpenCV-Python小应用(六):车道线检测前言前提条件实验环境基于霍夫变换的车道线检测参考文献前言 本文是个人使用OpenCV-Python的应用案例,由于水平有限,难免出现错漏,敬请批评改正。更多精彩内容&#xff…

【成为红帽工程师】第五天 NFS服务器

目录 一、NFS服务器简介 二、NFS的使用 三、客户端使用autofs自动挂载 四、相关实验 一、NFS服务器简介 NFS(网络文件系统),是FreeBSD支持的文件系统中的一种,它允许网络中的计算机(不同的计算机、不同的操作系统&…

Go学习之路:流程控制语句:for、if、else、switch 和 defer(DAY 1)

文章目录前引流程控制语句:for、if、else、switch 和 defer1.1、for循环语句/语法格式(一)1.2、for循环语句/省略前置后置语句(二)1.3、for循环语句/while(三)1.4、for循环语句/无限循环&#x…

美新科技过会:收入依赖美国、产能利用率低,林东亮等均为香港籍

11月25日,深圳证券交易所创业板披露的信息显示,美新科技股份有限公司(下称“美新科技”)获得上市委会议通过。据贝多财经了解,美新科技于2022年3月31日在创业板递交上市申请。 本次冲刺创业板上市,美新科技…

SpringCloudGateway--谓词(断言)

目录 一、定义 二、谓词使用 1、After 2、Before 3、Between 4、Cookie 5、Header 6、Host 7、Method 8、Path 9、Query 10、RemoteAddr 11、Weight 一、定义 SpringCloudGateway中三个重要词汇: 路由(Route):配置网…

傻白入门芯片设计,芯片键合(Die Bonding)(四)

目录 一、键合( Bonding) 1. 什么是键合(Bonding)? 2. 芯片键合步骤 3.芯片拾取与放置(Pick & Place) 4. 芯片顶出(Ejection)工艺 5. 使用环氧树脂(Epoxy)实现粘合的芯片键合工艺 6. 使用晶片黏结薄膜(DAF)的芯片键合工…

Redis实战篇(三)秒杀

一、全局唯一ID (1)定义 全局ID生成器,是一种在分布式系统下用来生成全局唯一ID的工具,一半满足下列特性: 唯一性高可用高性能递增性安全性 为了增加ID的安全性,我们不直接使用Redis自增的数值&#xf…

OpenCV-Python快速入门(十五):霍夫变换

OpenCV-Python快速入门(十五):霍夫变换前言前提条件实验环境霍夫变换基本原理霍夫直线变换(cv2.HoughLines())概率霍夫变换(cv2.HoughLinesP())霍夫圆变换(cv2.HoughCircles()&#…

移动端测试理论

App测试基础 App功能测试及专项测试 前言: 对于APP项目的测试,一般是进行系统测试。 测试主要从业务功能和非业务功能两个方面考虑。业务功能测试 根据软件说明,设计文档或用户需求验证App的各个功能的实现。 专项测试 兼容性测试 兼容性测试的关注点…

阿里Java研发面经(已拿offer)

一、自我总结: 1)首先最重要的一点。对自己的要求高点。不要以简单的实习生来要求自己。你要想 你会的别人都会 你的核心竞争力是什么呢。所以楼主建议以Java高级工程师来要求自己。不会的就学嘛。人面对未知的事物 本能反应是恐惧与退缩。可当你尝试去…

Xxl-Job 初次体验

Xxl-Job 初次体验一、定时任务-前置知识二、演变机制三、xxl-Job 设计思想四、xxl-job 实战1. 调度中心部署2. 编写执行器简单使用一下2.1. 让执行器run起来!2.2. 在调度中心配置任务,调度一下!3. XxlJob 任务的生命周期4. 路由策略5. 父子任…

汇川PLC编程软件AutoShop的使用

文章目录一、数据类型二、系统参数.1、内存容量设置2、“掉电保持范围”设置3、系统设置三、符号表1、编辑符号表2、符号表的打印四、元件监控表1、新建元件监控表2、编辑元件监控表3、复制元件监控表4、快速监控表五、元件使用信息表六、交叉引用表七、软元件内存表1、新建和复…