Docker 容器基础知识

2018-11-27 0 By admin

Docker是容器技术的一种实现手段。一种虚拟化的方案,在操作系统级别的虚拟化,不同于虚拟化软件(Vmware,virtualbox等)
只能运行相同或者相似内核的操作系统;依赖于Linux内核特性:NameSpace和Cgroups(Control Group)

NameSpace 命名空间

系统资源的隔离:进程、网络、文件系统。。。
PID 进程隔离
NETwork 网络设备、网络栈、端口等
IPC (InterProcess Communication) 跨进程通信的访问(信号量、消息队列和共享内存)
MNT(Mount) 挂载点(文件系统)
UTS (Unix Timesharing System) 内核和版本的标识(主机名和域名)
UIser 用户和用户组

ContrlGroups

用来分配资源 Google公司 从Linux Kernel 2.6.24@2007 开引入
资源限制
优先级设定
资源计量
资源控制

Docker 服务特性说明

将应用程序自动部署到容器
Go语言开源引擎
基于Apache 2.0开源授权协议发行
rootfs:文件系统隔离;
容器引擎:生命周期控制;

Docker 容器能力

文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

Docker 使用场景

使用Docker容器开发、测试、部署服务
创建隔离的运行环境
构建多用户的平台即服务(PaaS)基础设施
提供软件即服务(SaaS)应用程序
高性能、超大规模的宿主机部署

Docker 集群标准依赖的服务

ETCD 服务

1、key/value格式的存储服务。存储集群信息,节点信息,组件信息等数据
2、支持协调功能,提供主节点选举能力。

Kubernetes API Server 服务

1、提供集群管理的REST API 接口,包含认证授权、数据校验、集群状态
2、其他模块间的数据交互和通信的枢纽(只有API Server可以直接操作etcd)

ControllerManager 服务

Controller Manager由kube-controller-manager和cloud-controller-manager组成,是Kubernetes的大脑,它通过apiserver监控整个集群的状态,并确保集群处于预期的工作状态。
kube-controller-manager由一系列的控制器组成,像Replication Controller控制副本,Node Controller节点控制,Deployment Controller管理deployment等等。
cloud-controller-manager在Kubernetes启用Cloud Provider的时候才需要,用来配合云服务提供商的控制。

kube-schedule 服务

通过访问Kubernetes中/binding API, Scheduler负责Pods在各个节点上的分配。Scheduler是插件式的,Kubernetes将来可以支持用户自定义的scheduler。

controller-manager、scheduler和apiserver 三者的功能紧密相关,一般运行在同一个机器上,我们可以把它们当做一个整体来看,所以保证了apiserver的高可用即是保证了三个模块的高可用。也可以同时启动多个controller-manager进程,但只有一个会被选举为leader提供服务。

Docker 容器组成部分

1、Docker Client 客户端
2、Docker Daemon 守护进程
C/S架构
3、Docker image 镜像
容器的基石、
层叠的只读文件系统
联合加载(union mount)

4、Docker Container 容器
通过镜像启动
启动和执行阶段
写时复制(Copy on write)

5、Docker Registry 仓库
共有仓库和私有仓库
Docker Hub