本文共 764 字,大约阅读时间需要 2 分钟。
最近一直在研究这一块东西,做个记录吧。持续更新,有错误的地方也一点点改进。
从docker1.11开始,docker的整体框架改动很大。从之前的docker一个二进制文件变成了4个二进制文件。, , docker-containerd-shim和。docker的模块分离的一个好处就是底层的容器的实现,可以跟上层的daemon进行分离,所以除了runc,还有一个 出现。抽象出来的结构,就类似于下图:
runc可以理解成是 runtime container就是容器进行时,还是一般容器的实现。而后者runv则是 runtime virtual machine的实现,也就是利用一个精简的虚拟机来实现容器的功能,对容器所使用的API进行了一个封装。生成的容器就不在简单的是一个进程而已,而是一个拥有内核和更高隔离性的虚拟机。参见
组件之间的通讯使用的是gRPC,是google包装的一套RPC程序。有了 gRPC, 我们可以一次性的在一个 .proto 文件中定义服务并使用任何支持它的语言去实现客户端和服务器。有关gRPC可以参照以下几篇文档。
[1] [2] [3]下载最新版本的docker,需要更新yum源。
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'[dockerrepo]name=Docker Repositorybaseurl=https://yum.dockerproject.org/repo/main/centos/7/enabled=1gpgcheck=1gpgkey=https://yum.dockerproject.org/gpgEOF$ yum install docker-engine$ docker version
参考:
[1] [2]