From 1f5fb2d5213b3b9ecc7df074d4dcc22f25270784 Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Thu, 11 Sep 2014 17:07:49 +0800 Subject: [PATCH] Rewrite part of the architecture introduction --- arch/container.md | 6 ++++-- arch/image.md | 9 +++++++-- arch/repo.md | 5 ++++- arch/underly.md | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/arch/container.md b/arch/container.md index d91e7e9..4f25d0a 100644 --- a/arch/container.md +++ b/arch/container.md @@ -1,7 +1,9 @@ +##docker容器 + 当我们运行`docker run -i -t ubuntu /bin/bash`命令时,docker 在后台运行的操作如下: -* 如果本地有ubuntu这个image就从它创建容器,否则从公有仓库下载 -* 从image创建容器 +* 如果本地有ubuntu这个image就利用它,否则从公有仓库下载 +* 从image创建一个容器 * 分配一个文件系统,并在只读的image层外面挂载一层可读写的层 * 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 * 从地址池配置一个ip地址给容器 diff --git a/arch/image.md b/arch/image.md index 22969c1..aa8c91b 100644 --- a/arch/image.md +++ b/arch/image.md @@ -1,4 +1,9 @@ +##docker image的工作原理 docker image是怎么实现增量的修改和维护的? -每个docker都有很多层次构成,docker使用 Union File Systems 将这些不同的层结合到一个image中去。 +每个docker都有很多层次构成,docker使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个image中去。 +Union FS是一种特殊的文件系统,它支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem), -AUFS (AnotherUnionFS) 是一种 Union FS, 简单来说就是支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)的文件系统, 更进一步的理解, AUFS支持为每一个成员目录(类似Git Branch)设定readonly、readwrite 和 whiteout-able 权限, 同时 AUFS 里有一个类似分层的概念, 对 readonly 权限的 branch 可以逻辑上进行修改(增量地, 不影响 readonly 部分的)。通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个disk挂到同一个目录下, 另一个更常用的就是将一个 readonly 的 branch 和一个 writeable 的 branch 联合在一起,Live CD正是基于此方法可以允许在 OS image 不变的基础上允许用户在其上进行一些写操作。Docker 在 AUFS 上构建的 container image 也正是如此。 \ No newline at end of file +AUFS (AnotherUnionFS) 就是一种 Union FS, AUFS支持为每一个成员目录(类似Git Branch)设定readonly、readwrite 和 whiteout-able 权限, 同时 AUFS 里有一个类似分层的概念, 对 readonly 权限的 branch 可以逻辑上进行修改(增量地, 不影响 readonly 部分的)。 + +通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个disk挂到同一个目录下, 另一个更常用的就是将一个 readonly 的 branch 和一个 writeable 的 branch 联合在一起,Live CD正是基于此方法可以允许在 OS image 不变的基础上允许用户在其上进行一些写操作。 +Docker 在 AUFS 上构建的 container image 也正是如此。 \ No newline at end of file diff --git a/arch/repo.md b/arch/repo.md index bfcbd53..b11b552 100644 --- a/arch/repo.md +++ b/arch/repo.md @@ -1 +1,4 @@ -docker仓库用来保存我们的images,当我们创建了自己的image之后我们就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。 \ No newline at end of file +##docker仓库 +docker仓库用来保存我们的images,当用户创建了自己的image之后就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。 + +*跟git的操作类似。 \ No newline at end of file diff --git a/arch/underly.md b/arch/underly.md index dc02323..d0ee4f0 100644 --- a/arch/underly.md +++ b/arch/underly.md @@ -1,3 +1,4 @@ +##底层技术 docker底层的2个核心技术分别是Namespaces和Control groups。 以下内容摘自InfoQ Docker,自1.20版本开始docker已经抛开lxc,不过下面的内容对于理解docker还是有很大帮助。