docker容器技术基础入门

主机级虚拟化

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

docker的用户 docker user namespace_docker的用户

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

docker的用户 docker user namespace_名称空间_02

容器级虚拟化

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