容器底层技术探秘
&
我的自研容器引擎Cocker(C语言实现)
厉华 2018
目录
容器底层技术探秘&我的自研容器引擎Cocker(C语言实现)
容器概述
容器底层技术
我的自研容器引擎Cocker
容器概述 - 几个概念
容器底层技术探秘&我的自研容器引擎Cocker(C语言实现)
容器是什么?
容器是将软件所需的完整环境(包括可执行程序、库文件、配置文件等)打包成一个独立包裹
,以便于在目标系统中快捷、隔离的部署运行。
Linux容器进程就是一个Linux进程(共享Linux内核),以及其子进程树,它们拥有与容器外环
境一定程度隔离的进程树、文件系统、IPC、网络等名字空间,还有其系统资源使用额度限制。
镜像是什么?
“镜像”之于“容器”,好比“类”之于“对象”。
Docker是什么?
是Docker公司推出的Go语言研发实现的容器引擎。
举个栗子:我想装个MySQL玩玩
× 用rpm/yum安装发行版自带的二进制包安装?版本不够新!
× 官网下载最新源代码自己编译?太麻烦!
× 网上别人帮你编译好的最新二进制安装包?万一别人加入了system(“rm –rf /”);你的操作系统
就得重装了!(玩笑)
√ 现在流行的做法是,从容器厂商镜像库里pull一个MySQL镜像导入到自己的本地镜像库,通
过容器引擎把容器内的MySQL主控进程运行起来即可!
“快捷”体现在运行容器其实就是启动一个进程。
“隔离”体现在容器里的进程树、文件系统、IPC、网络等和容器外处于不同“位面”,无法互相影
响,无法影响容器外环境。但大量变动的数据一般通过目录映射存储在外面。
“隔离”还体现在哪天你不想玩了,停止容器、删除镜像即可,不怕MySQL可执行程序和库文件
散落在/bin、/usr/lib等目录中清理不干净。
容器概述 - 容器层次结构
容器底层技术探秘&我的自研容器引擎Cocker(C语言实现)
物理机里部署软件
虚
拟
机
里
部
署
软
件
容器里部署软件
容器概述 - 容器生命周期
容器底层技术探秘&我的自研容器引擎Cocker(C语言实现)