不可修改(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

云原生k8s的前世今生--Docker相关推荐

  1. [云原生k8s] k8s的CA证书创建和使用

    目录 引言 一.部署步骤+实验环境 二.所有节点系统初始化 三.Etcd集群部署 3.1.准备cfssl证书生成工具 3.2.生成Etcd证书 自签证书颁发机构(CA) 自签CA 生成证书: 使用自谦 ...

  2. 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装

    云原生|K8s系列第1篇目录 1.先从K8s不是什么讲起 2.K8s是什么及核心基础概念 2.1 Container容器 2.2 Pod 2.3 Node 2.4 Label 2.5 Annotati ...

  3. 华为Cloud Native Lives课程第一课-云原生技术的前世今生

    经过十多年的发展,云计算技术已由Cloud Migration阶段发展到了Cloud Native阶段,即云原生. 云原生阶段的代表技术有容器.服务网络.微服务.不可变基础设施和声明式API. CNC ...

  4. 【云原生生态圈】:Docker核心技术全面总结

    本专栏将从基础开始,循序渐进,由浅入深讲解云原生相关知识,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:云原生专栏 如果文章知识点有错误的地方,请指正!大家一起学习,一起进步. 本文将分别 ...

  5. 【技术解决方案】企业如何从SpringBoot应用平滑迁移到云原生K8s平台

    文章目录 在K8S上部署Spring Cloud Alibaba 在Kubernetes上部署Spring Cloud Kubernetes 在Kubernetes上部署Spring Boot应用 方 ...

  6. 【云原生】1.2 Docker基本概念(含 Docker 安装)

    哈喽~大家好呀,上篇呢介绍了云原生概念,这篇呢我们来看看 Docker 基本概念吧.

  7. 云原生k8s的金箍棒

    如果云原生是我们喜欢的<西游记>中孙悟空,那Autoscaling就是云原生手中的金箍棒.想象一下,没有金箍棒的孙悟空,还能到处降妖伏魔么?还能成为斗战圣佛吗? Autoscaling 根 ...

  8. 【云原生|K8s系列特别篇】:一文速通实战Helm管理工具

    本期文章是K8s特别篇,主要是速通学习Helm之简介.仓库.实践应用等.通过本期文章:我们将学习Helm的基础知识.简介.仓库.实践应用等 在前期的文章中,已经介绍了一些云原生入门的知识及简单实战,感 ...

  9. 探索云原生技术之基石-Docker容器高级篇(2)

    ❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5

最新文章

  1. lua中正则表达式的坑
  2. LoadRunner 技巧之 手动关联与预关联
  3. sql数据类型转换(cast() and convent())函数)
  4. SSL证书如何工作?
  5. 【P2766】 最长不下降子序列问题
  6. 2017年11月04日普及组 Biotech
  7. Spring Data ElasticSearch示例--使用NativeSearchQuery查询
  8. Atitit 在线机器人 自动化技术一览 目录 1. 俩个要点 1 1.1. 识别控件(对话框 按钮 列表等) 1 1.2. Dom控件操作 1 1.3. 鼠标键盘操作 api 1 2. 可以使用
  9. 单片机毕业设计196例
  10. 联想电脑 Windows10 20H2 32位64位 专业版 V2021【OEM原版镜像】
  11. 企业IT基础架构设计概要
  12. 32位qt程序, 利用32位mysql驱动,连接64位mysql8.0
  13. blowfish算法c语言,使用Blowfish算法给文件加密
  14. C# xml格式字符串 反序列化和序列化
  15. caffe-ristretto:定点举例
  16. R语言 提取数据中的任意子集
  17. 系统 应用程序 提示 初始化失败 或 无法加载模块 等错误
  18. lightroom安卓_如何将Lightroom从PC预设导入手机(安卓amp;iOS)
  19. 2022年危险化学品经营单位安全管理人员操作证考试题模拟考试平台操作
  20. 你经历过绝望吗?两次!

热门文章

  1. C++语言程序设计第五版 - 郑莉(第五章课后习题)
  2. 清华水木BBS竟然被关了
  3. 如何撰写本科毕业论文文献综述,这篇文章帮你全搞定
  4. 35岁的程序员:第43章,职级评定
  5. 前途是光明的,道路是曲折的
  6. 极客日报:日本的首颗 5nm 芯片公布;虾米音乐正式关停;网易云音乐再次喊话酷狗...
  7. 减治法在组合问题中的应用 ——8枚硬币问题
  8. error: expected declaration or statement at end of input----solved
  9. win10双击jdk8安装包没反应?看这里给你解决
  10. 西电职称计算机报名,西安电子科技大学.PDF