diff --git a/underly/README.md b/underly/README.md new file mode 100644 index 0000000..42ad985 --- /dev/null +++ b/underly/README.md @@ -0,0 +1 @@ +Docker底层的核心技术包括Linux上的名字空间(Namespaces)、控制组(Control groups)、Union文件系统(Union file systems)和容器格式(Container format)。 diff --git a/underly/arch.md b/underly/arch.md new file mode 100644 index 0000000..6ff7280 --- /dev/null +++ b/underly/arch.md @@ -0,0 +1,10 @@ +##基本架构 +Docker采用了C/S架构,包括客户端和服务端。 +docker daemon作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 +客户端和服务端既可以运行在一个机器上,也可通过socket或者RESTful API来进行通信。 + +![Docker基本架构](../_images/docker_arch.png) + + +Docker daemon一般在宿主主机后台运行,等待接收来自客户端的消息。 +Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟docker daemon交互。 diff --git a/underly/cgroups.md b/underly/cgroups.md new file mode 100644 index 0000000..d97e4d2 --- /dev/null +++ b/underly/cgroups.md @@ -0,0 +1,3 @@ +##控制组 + +主要用来隔离各个容器和宿主主机的资源利用。 diff --git a/arch/README.md b/underly/namespace.md similarity index 68% rename from arch/README.md rename to underly/namespace.md index 9327134..ee4227f 100644 --- a/arch/README.md +++ b/underly/namespace.md @@ -1,18 +1,4 @@ -##基本架构 -Docker采用了C/S架构,包括客户端和服务端。 -docker daemon作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 -客户端和服务端既可以运行在一个机器上,也可通过socket或者RESTful API来进行通信。 - -![Docker基本架构](../_images/docker_arch.png) - - -Docker daemon一般在宿主主机后台运行,等待接收来自客户端的消息。 -Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟docker daemon交互。 - -##核心技术 -Docker底层的2个核心技术分别是Linux上的名字空间(Namespaces)和控制组(Control groups)。 - -自1.20版本开始,Docker已经抛开LXC,不过下面的内容对于理解Docker还是有很大帮助。 +##名字空间 ###pid 名字空间 不同用户的进程就是通过pid名字空间隔离开的,且不同名字空间中可以有相同pid。所有的LXC进程在Docker中的父进程为Docker进程,每个LXC进程具有不同的名字空间。同时由于允许嵌套,因此可以很方便的实现嵌套的Docker容器。 @@ -31,5 +17,3 @@ UTS("UNIX Time-sharing System") 名字空间允许每个容器拥有独立的hos ###user 名字空间 每个容器可以有不同的用户和组id, 也就是说可以在容器内部用容器内部的用户执行程序而非Host上的用户。 - -Control groups主要用来隔离各个容器和宿主主机的资源利用。