docker架构的详解
docker架构
一.具体部分的详解:
1.docker daemon
docker daemon是常驻的后台程序
docker server就是后台程序docker接受数据请求,然后交给route,路由给指定的容器,然后handler处理请求信息数据的(区分数据就是区分头部信息的类型,我请求的是什么类型的数据就去不同的服务器。)。然后交给docker engine,形成要给job任务。
2.Graph驱动模块:
Repostitory
下载的镜像保存,
GraphDB
容器与镜像关系的记录。
镜像是不同层的文件组合,如果镜像相同的层有很多,只会合并成一份,如果有百度云盘,所有保存的电影其实在百度云上就一部。
3.Driver模块:
定制容器的环境,如:cpu多少,内存多少,硬盘多少,
容器的生命后期根据程序的生命周期决定,运行什么驱动什么,从而提高容器运行的效率。
driver模块的好处是需要什么驱动什么,提高容器运行的效率,如果没有网路的话,
(1)graphdriver主要用于完成镜像的管理,存储,读取,下载下来的镜像的存储也是他,驱动存储镜像
驱动不同的操作系统有不同的文件系统管理,
driver存储结构:
btrfs-deban
vfs-centos
aufs-ubuntu
devmapper-gm
(2)networkdriver
bridge 桥接到docker0上,直接进到物理机上。把容器和桥接到docker0,然后通过docker 0 转给容器,只要放到物理机上就好。
networkif 防火墙,路由等
ip 地址
port 端口
属于容器内部操作,放到container上就行。
(3)execdriver
execdriver 容器的执行驱动,负责容器在创建空间是的命名规则和容器资源限制,native一共有两个分支,LXC (1.2版本以前) native(1.2以后)跨平台用,依赖于native ,可以控制任何一个操作系统上都可以分割namespace空间和cgroup结构,
4. libcontainer模块
正是由于libcontainer的存在,Docker可以直接调用libcontainer,而最终操纵容器的namespace、cgroups、apparmor、网络设备以及防火墙规则等
5. container模块
Docker container(Docker容器)是Docker架构中服务交付的最终体现形式
6.rootfs模块
目录结构
二.详解总结:
处理数据请求的叫docker daemon
启动的也叫docker daemon
docker daemon运行在后台程序的叫docker server
需要对任务处理的叫docker engine
处理docker engine需要从网上下载镜像,或者从本地拉取镜像,保存在本地的叫graph,graph分成两个部分,graphDB用来存储镜像之间的存储关系,graph images 用来存储镜像的。
然后开始进行驱动,驱动分为三个部分进行驱动,第一个驱动是物理机启动时需要哪些目录结构,镜像所需要的目录结构,他直接启动的是rootfs,然后启动的是网路结构,networkdriver,让容器和物理机能连接起来,
bridge:启动容器后会出现docker0,关闭后就会消失,真正通讯是容器桥接到docker0,相当于一个路由,然后在将docker0 桥接到物理网卡上。
驱动对容器里边的东西进行驱动,IP network interface port
execdriver 执行驱动:主要驱动不容系统里的namespaces和cgroup,最总把这个六个选项启动,开启了一个容器,然后在rootfs里打开一个容器。