核心技术
1、容器规范
1.1容器runtime(runtime spec):
runtime 是真正运行容器的地方,因此为了运行不同的容器runtime 需要和操作系统内核紧密合作相互在支持,以便为容器提供相应的运行环境。
目前主流的三种runtime:
Lxc:linux 上早期的runtime,Docker 早期就是采用lxc 作为runtime。
runc:目前Docker 默认的runtime,runc 遵守OCI 规范,因此可以兼容lxc。
rkt:是CoreOS 开发的容器runtime,也符合OCI 规范,所以使用rktruntime 也可以运行Docker 容器。
runtime 主要定义了以下规范, 并以json 格式保存在/run/docker/runtime-runc/moby/容器ID/state.json 文件,此文件会根据容器的状态实时更新内容:
版本信息:存放OCI 标准的具体版本号。
容器ID:通常是一个哈希值,可以在所有state.json 文件中提取出容器ID 对容器进行批量操作(关闭、删除等),此文件在容器关闭后会被删除,容器启动后会自动生成。
PID:在容器中运行的首个进程在宿主机上的进程号,即将宿主机的那个进程设置为容器的守护进程。
容器文件目录:存放容器rootfs 及相应配置的目录,外部程序只需读取state.json 就可以定位到宿主机上的容器文件目录。
容器创建:创建包括文件