容器弹性云底层原理揭秘(上)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器弹性云底层原理揭秘(上)

Docker


容器概念

容器特性

1、不标准物品标准化(比如杂物、液体、应用)
2、上层工具提供标准化的操作方式 屏蔽细节

容器定义

构建、管理、保护应用程序

容器举例

  • 包装、运输
  • Add/Delete/Iterator
  • 应用管理和调度


容器技术演进


OS虚拟化->内核轻量级虚拟化->资源隔离机制(内存、CPU、网络、IO独占)

image.png


docker共享host内核;通过namespace和cgroup来做资源隔离的

Docker本质不是一个操作系统 其实就是一个进程 利用操作系统机制做隔离


现状与Docker方案对比


image.png

1、服务端负责构建、分发、运行容器
2、Client和Server可以运行在同一个Host上
  客户端也可以通过Socket或Rest API与远程的服务端通信
3、如果docker damond挂掉了即父进程挂了 对子进程不影响 
  但是不能启动新的进程了即不能在创建镜像和运行镜像等了
4、网络是共享的 文件句柄是单独的 可以让它共享也可以不让它共享


Docker命令

image.png

commit含义:新运行的docker进程上面重新生成一个新的镜像


Docker 镜像

image.png

1、dokcer镜像是一个静态只读模版
通过它创建docker容器 是一个进程、动态的
2、dokcerfile是从无到有 创建镜像
3、docker启动命令:ENTRYPOINT/CMD
4、设置环境变量:ENV key value
5、挂载路径 VOLUME ["dir1"]
6、docker容器是镜像的运行实例


image.png


Docker解决应用标准化的案例


image.png


差异化不要打包在镜像中


K8S简介


1、K8S 容器管理和编排
2、k8s治理功能 就是一个管理工具
3、k8s虚拟化是docker做的
4、机器平均利率用不超过20% 用k8s 弹性调度 提高资源利用率


Docker运行数量


40核CPU 192G内存的服务器配置 
一个docker 分配2个cpu 最多20个docker


云发展阶段


Iaas云

image.png

sdn(软件定义网络)

网络一旦进入机房交换机即二层网络
很难跨机房通讯 直接通讯很难
sdn网络层面虚拟化
在机房之间直接通讯
即二层网络变三层网络进行通讯

sds(软件定义存储)

共享存储 不用关注机器和存储
对应用无侵入 是面向资源的


用户不想关注硬件资源而是想只关注应用本身

需要面向应用系统降低服务开发部署和运维成本

1、安装包标准化即image镜像
2、应用进程标准化即container容器


容器化

一个dokcer应用运行即单进程
多个docker应用即多进程如何管理 使用k8s


FAAS

容器都不需要关注 只需要关注函数
无服务化架构 serverless


K8S架构(系统架构)


image.png


1、cAdvise:监控
2、kubelet:本地的agent
3、启动pod 通过cAdvise获取pod信量信息 进行通讯
4、每一个宿主机上有一个kubelet 负责pod启动终止扩容收集信量信息

谁来控制kubelet呢?

1、是k8s master 即上图的k8s架构本身(中心控制节点)
2、api server和kubelet通讯 告诉kubelet 去启动一个pod
3、kubelet心跳连接api server 也会告诉api server pod启动结果
4、api server一般部署3个 这三个都是无状态的 kebelet连接任何一个都是可以的
5、心跳信息存储在etcd中(k8s的所有存储都是放在etcd中)


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
441 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
Cloud Native Linux 网络虚拟化
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
在Linux网络虚拟化领域,虚拟以太网设备(veth)扮演着至关重要的角色🌐。veth是一种特殊类型的网络设备,它在Linux内核中以成对的形式存在,允许两个网络命名空间之间的通信🔗。这篇文章将从多个维度深入分析veth的概念、作用、重要性,以及在容器和云原生环境中的应用📚。
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
|
7天前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
15天前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
159 2
|
11月前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
254 1
|
存储 监控 Shell
docker的底层原理二:容器运行时环境
本文深入探讨了Docker容器运行时环境的关键技术,包括命名空间、控制组、联合文件系统、容器运行时以及分离的进程树,这些技术共同确保了容器的隔离性、资源控制和可移植性。
246 5
|
XML Java 数据格式
Spring5入门到实战------2、IOC容器底层原理
这篇文章深入探讨了Spring5框架中的IOC容器,包括IOC的概念、底层原理、以及BeanFactory接口和ApplicationContext接口的介绍。文章通过图解和实例代码,解释了IOC如何通过工厂模式和反射机制实现对象的创建和管理,以及如何降低代码耦合度,提高开发效率。
Spring5入门到实战------2、IOC容器底层原理
|
Kubernetes Linux 虚拟化
一文详解容器技术简介和基本原理
本文全面阐述了容器技术的发展历程、关键技术、架构和当前的行业生态,特别是容器技术在云环境中的应用和演进。
|
弹性计算 Serverless 调度
《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(3)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
226 1
|
消息中间件 Kubernetes 数据库
在k8S中,初始化容器(init container)概念原理是什么?
在k8S中,初始化容器(init container)概念原理是什么?