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
lxc -> libcontainer -> runC
早起使用lxc技术进行二次封装
使用lxc-create创建用户空后,连接docker镜像仓库(不是使用template启动),使用images(镜像)启动容器
一个容器内只运行一个进程
后期弃用了lxc,
编写了libcontainer实现lxc功能,
后续标准化为runC :runcontainer
runcontainer:新版docker容器运行引擎
隔离,安全
分层构建,联合挂载层
容器编排技术
machine + swarm + compose
mesos + marathon
kubernetes -> k8s