容器是什么?
在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中与虚拟机不同的是,这些应用运行时用着一个Kernel,容器技术大大提升了对系统资源的利用率,也提高了应用的部署迁移效率。
Docker核型技术及架构
进程隔离技术 - namespace
UTS - 主机名与域名 IPC - 信号量,消息队列和共享内容 PID - 进程编号 Network - 网络设备,网络栈,端口 Mount - 文件系统 User - 用户和用户组
进程资源配额技术 - cgroups
利用Namespace可以构建一个相对隔离的容器,而通过cgroups, 可以为容器设置系统资源配额,包括CPU, 内存,IO等。
Docker构造: client-server
Execdriver存储了容器的定义的配置信息 Networkdriver的作用是完成docker容器网络环境的配置,包括容器的IP,端口,防火墙策略及与主机的端口映射等 Graphdriver则负责对容器镜像的管理
Docker Daemon的工作过程
容器 vs 虚拟化
核心区别在于容器不需要建立在独立的操作系统上,提高资源的利用率和性能,但是隔离型相对较差.
Docker的优势
Docker的核心概念
容器的网络概述
Bridge网络模式
Docker0虚拟网桥 主机上创建一个虚拟网卡veth pair 类似交换机技术
Host 模式
容器不会获得一个独立的network namespace,而是和宿主机共用一个network namespace
Container模式
容器间共享一个network namespace, 而不是和宿主机共享
Docker的数据卷
持久化 共享存储
三大Orchestration工具
2017年10月17日,docker官方宣布原生支持Kubernetes
容器平台架构
容器平台技术体系
Kubernetes 技术架构
Master: 集群的管理控制中心 Minion: node组件,提供容器集群的运行环境
Kubernetes核心组件
Kubernetes 架构原理
一个POD通常运行一个容器 一个容器通常运行一个微服务
假如1个POD里面有紧密联系的容器运行 业务容器共享Pause容器的network和存储
Kubernetes 核心概念
Service:
抽象的概念,它定义了POD的逻辑分组和访问策略 借助Service可以方便的实现服务发现和负载均衡
Label:
标签,用于实现service到POD映射的键值对 key=value
POD的IP不固定,通过Service相对固定访问