Docker8

docker struct and namespace and cgroup

This project is maintained by wangfakang

关于docker架构的简单认识:

1.宏观看docker:

首先docker是一种c/s模式的架构,分为docker client 和 docker daemon.其中docker client主要是 收集用户执行的命令参数,并做简单的解析,然后解析调用相应的handler与docker daemon进行连接然后动 过docker daemon的router server 进行相应的路由处理,调用相应的函数进行response给client.

2.docker client:

主要是进行相关命令行的解析,然后进行向docker发送命令请求.

3.docekr daemon:

主要就是根据client发过来的请求参数进行执行相应的handler.其组件:Docker Server、Engine和Job三部分, 其中docker server是接受client的请求的,Engine主要是用来管理job的执行,job就是一个具体的任务执行.

4.docker镜像:

docker 进行run image的时候生成一个容器,有这样几个概念rootfs、Union mount、image以及layer。

5.基础概念的简单介绍docker、lxc、cgroup、namespace是最近比较的技术。先了解一下他们分别是什么:

docker是lxc的管理器,lxc是cgroup的管理工具,cgroup是namespace的用户空间的管理接口。namespace是linux内核在 task_struct中对进程组管理的基础机制。
linux中称谓的container在内核层面由两个独立的机制保证,一个保证资源的隔离性,名为namespace;一个进行资源的 控制,名为cgroup。

docker 的名字叫 lxc-docker而 LXC 又是基于 cgroup 的 namespace, chroot 等, 由于我并不懂这些, 但 namespace 可以帮助我们理解, 就像我们写 程序一样, 这是一个命名空间, 与其他 namespace 相区别:
cgroup 对于 docker 是至关重要的, 了解它才会觉得 docker 不神秘, cgroup 全称为 control group, 是 linux 内核提供 的功能, 简单的说, 它的作用就是把系统运行的进程按用户自定义的群组区分, 也就是说一个 docker, 一个 group cgroup 有限制使用资源的能力.

欢迎一起交流学习

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

Thx

Author