docker容器技术基础入门(转载)

docker容器技术基础入门

主机级虚拟化

 type-I
    主机硬件 -> heypevize -> 创建使用虚拟机

 type-II:vmvarm,kvm
    主机硬件 -> host os -> vmm -> 创建使用虚拟机

容器级虚拟化

CGroups:Control Groups
    控制容器使用cpu、内存资源
Namespaces:名称空间,
    隔离各容器资源
LXC:LinuX Container
    lxc-create:快速创建一个用户空间
    template:基于模板完成安装过程,创建名称空间

LXC

Linux Containers 的缩写,一种操作系统层虚拟化技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器,内含应用软件本身的代码,以及所需要的操作系统核心和库。

Namespaces

namespace:名称空间,在内核空间实现多个隔离IPC,User,Net等,原生支持 (UTS,Mount,IPC,PID,User,Net)
UTS namespace 主机名与域名
Mount namespace 挂载点
IPC namespace 信号量、消息队列和共享内存
PID namespace 进程号
User namespace 用户和组
Network namespace 网络设备、网络栈、端口等
namespace 系统调用参数 隔离内容 内核版本
UTS CLONE_NEWUTS 主机名与域名 2.6.19
IPC CLONE_NEWIPC 信号量、消息队列和共享内存 2.6.19
PID CLONE_NEWPID 进程编号 2.6.24
Network CLONE_NEWNET 网络设备、网络栈、端口等 2.6.29
Mount CLONE_NEWNS 挂载点(文件系统) 2.4.19
User CLONE_NEWUSER 用户和用户组 3.8

cgroups

cgroups:控制组群(英语:control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源
blkio :块设备 IO
cpu : CPU
cpuacct : CPU 资源使用报告
cpuset :多处理器平台上的 CPU 集合
devices :设备访问
freezer :挂起或恢复任务
memory :内存用量及报告
perf_event :对 cgroup 中的任务进行统一性能测试
net_cls : cgroup 中的任务创建的数据报文的类别标识符

docker

  • docker中的容器引擎
 lxc -> libcontainer -> runC
早起使用lxc技术进行二次封装
	使用lxc-create创建用户空后,连接docker镜像仓库(不是使用template启动),使用images(镜像)启动容器

一个容器内只运行一个进程

后期弃用了lxc,
编写了libcontainer实现lxc功能,
后续标准化为runC :runcontainer

runcontainer:新版docker容器运行引擎
隔离,安全
分层构建,联合挂载层

容器编排技术

machine + swarm + compose
mesos + marathon
kubernetes -> k8s
原文地址:https://www.cnblogs.com/evescn/p/12793730.html