From e6883a4ef2d488cab1f78a5c6a77bd2eb4b9740d Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Fri, 12 Sep 2014 16:17:56 +0800 Subject: [PATCH] Refine and fix --- arch/container.md | 6 +++--- arch/image.md | 5 +++-- arch/internal.md | 13 +++++++------ arch/repo.md | 9 +++++---- arch/underly.md | 2 +- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/arch/container.md b/arch/container.md index 4f25d0a..6b66588 100644 --- a/arch/container.md +++ b/arch/container.md @@ -1,11 +1,11 @@ ##docker容器 当我们运行`docker run -i -t ubuntu /bin/bash`命令时,docker 在后台运行的操作如下: - + * 如果本地有ubuntu这个image就利用它,否则从公有仓库下载 -* 从image创建一个容器 +* 之后从image创建一个容器 * 分配一个文件系统,并在只读的image层外面挂载一层可读写的层 * 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 * 从地址池配置一个ip地址给容器 * 执行你指定的程序,在这里启动一个/bin/bash进程 -* -i -t 指定标准输入和输出 \ No newline at end of file +* -i -t 指定标准输入和输出 diff --git a/arch/image.md b/arch/image.md index aa8c91b..227836d 100644 --- a/arch/image.md +++ b/arch/image.md @@ -1,9 +1,10 @@ ##docker image的工作原理 + docker image是怎么实现增量的修改和维护的? 每个docker都有很多层次构成,docker使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个image中去。 -Union FS是一种特殊的文件系统,它支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem), +Union FS是一种特殊的文件系统,它支持将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem), 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 +Docker 在 AUFS 上构建的 container image 也正是如此。 diff --git a/arch/internal.md b/arch/internal.md index 051e2d1..65bdac2 100644 --- a/arch/internal.md +++ b/arch/internal.md @@ -1,17 +1,18 @@ +##内部组件 docker有三个内部组件 -* docker images -* docker registries -* docker containers +* images(镜像 +* registries(仓库) +* containers(容器) -### Docker images +### Images docker images 就是一个只读的模板。比如:一个image可以包含一个完整的ubuntu的操作系统,里面仅安装了apache或者你需要的其它应用程序。 images可以用来创建docker containers,docker提供了一个很简单的机制来创建images或者更新现有的images,你甚至可以直接从其他人那里下载一个已经做好的images来直接使用。 -###Docker registries +###Registries Docker registries 也叫docker仓库,它有公有仓库和私有仓库2种形式,他们都可以用来让你上传和下载images。公有的仓库,即[Docker Hub](https://hub.docker.com),提供了一个数量庞大的image库供用户下载。当然,你也可以在自己的局域网内建一个自己的私有仓库。 *从这个意义上看,Docker Hub的功能跟GitHub类似。 -###Docker containers +###Containers 即docker容器,容器是从image镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。 *image是只读的,container在启动的时候创建可写的一层作为最上层。 diff --git a/arch/repo.md b/arch/repo.md index b11b552..03c245e 100644 --- a/arch/repo.md +++ b/arch/repo.md @@ -1,4 +1,5 @@ -##docker仓库 -docker仓库用来保存我们的images,当用户创建了自己的image之后就可以使用push命令将它上传到公有或者私有仓库,这样下次要在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。 - -*跟git的操作类似。 \ No newline at end of file +##docker仓库 + +docker仓库用来保存我们的images,当用户创建了自己的image之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个image时候,只需要从仓库上pull下来就可以了。 + +*跟git的操作类似。 diff --git a/arch/underly.md b/arch/underly.md index d0ee4f0..e5685e0 100644 --- a/arch/underly.md +++ b/arch/underly.md @@ -21,4 +21,4 @@ UTS("UNIX Time-sharing System") namespace允许每个container拥有独立的hos ###user namespace 每个container可以有不同的 user 和 group id, 也就是说可以在container内部用container内部的用户执行程序而非Host上的用户。 -Control groups主要用来隔离各个容器和宿主主机的资源利用。 \ No newline at end of file +Control groups主要用来隔离各个容器和宿主主机的资源利用。