restruct the chapter to make it more understanding

This commit is contained in:
Baohua Yang 2014-09-26 15:44:31 +08:00
parent 6d890cab80
commit 8add83dcc2
7 changed files with 65 additions and 87 deletions

View File

@ -12,12 +12,12 @@
* [Ubuntu](install/ubuntu144.md) * [Ubuntu](install/ubuntu144.md)
* [CentOS](install/centos.md) * [CentOS](install/centos.md)
* [镜像](image/README.md) * [镜像](image/README.md)
* [获取镜像](image/pull.md)
* [列出](image/list.md) * [列出](image/list.md)
* [使用Docker Hub](image/dockerhub.md)
* [创建](image/create.md) * [创建](image/create.md)
* [存出和载入](image/save_load.md) * [存出和载入](image/save_load.md)
* [移除](image/rmi.md) * [移除](image/rmi.md)
* [底层原理](image/internal.md) * [实现原理](image/internal.md)
* [容器](container/README.md) * [容器](container/README.md)
* [启动](container/run.md) * [启动](container/run.md)
* [守护态运行](container/daemon.md) * [守护态运行](container/daemon.md)

View File

@ -1,10 +1,10 @@
#Docker镜像 # Docker镜像
在之前的介绍中我们知道镜像是Docker的三大组件之一。 在之前的介绍中我们知道镜像是Docker的三大组件之一。
Docker把下载的镜像存储到本地如果一个镜像不在本地Docker会从一个镜像仓库下载默认的仓库是 Docker Hub 公共仓库 Docker运行容器前需要本地存在对应的镜像如果镜像不存在本地Docker会从镜像仓库下载默认是Docker Hub公共注册服务器中的仓库
接下来将介绍更多关于镜像的内容,包括: 本章将介绍更多关于镜像的内容,包括:
* 使用和管理本地主机上的镜像 * 从仓库获取镜像;
* 创建一个基础的镜像 * 管理本地主机上的镜像;
* 上传镜像到Docker Hub公共镜像仓库 * 介绍镜像实现的基本原理。

View File

@ -145,3 +145,12 @@ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB ubuntu 14.04 05ac7c0b9383 17 seconds ago 215.5 MB
``` ```
###上传镜像
用户可以通过`docker push`命令把自己创建的镜像上传到仓库中来共享。例如用户在Docker Hub上完成注册后可以推送自己的镜像到仓库中。
```
$ sudo docker push ouruser/sinatra
The push refers to a repository [ouruser/sinatra] (len: 1)
Sending image list
Pushing repository ouruser/sinatra (3 tags)
```

View File

@ -1,61 +0,0 @@
## 使用Docker Hub管理镜像
[Docker Hub](https://hub.docker.com/)是一个公共仓库供用户上传和下载制作好的不同用途的镜像用户可以在Docker Hub的网站上来查找满足自己需求的镜像。
###查找镜像
使用`docker search`命令。比如当开发团队需要ruby和sinatra作为web应用程序的开发时可以使用关键字sinatra进行搜索。
```
$ sudo docker search sinatra
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
training/sinatra Sinatra training image 0 [OK]
marceldegraaf/sinatra Sinatra test app 0
mattwarren/docker-sinatra-demo 0 [OK]
luisbebop/docker-sinatra-hello-world 0 [OK]
bmorearty/handson-sinatra handson-ruby + Sinatra for Hands on with D... 0
subwiz/sinatra 0
bmorearty/sinatra 0
```
可以看到返回了很多包含sinatra的镜像。其中包括镜像名字、描述、星级表示该镜像的受欢迎程度、是否官方创建、是否自动创建。
官方的镜像是由stackbrew项目组创建和维护的automated 资源允许用户验证镜像的来源和内容。
现在可以下载使用training/sinatra镜像。
到目前为止我们看到了2种镜像资源。
一种是类似ubuntu这样的基础镜像被称为基础或根镜像。这些基础镜像是由Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
还有一种类型比如training/sinatra镜像。它是由Docker的用户创建并维护的你可以通过指定镜像名字的前缀来指定使用某个用户的镜像比如training。
###获取镜像
可以使用`docker pull`命令来预先下载所需要的镜像。
下面的例子下载一个centos镜像。
```
$ sudo docker pull centos
Pulling repository centos
b7de3133ff98: Pulling dependent layers
5cc9e91966f7: Pulling fs layer
511136ea3c5a: Download complete
ef52fb1fe610: Download complete
```
下载过程中,会输出获取镜像的每一层信息。
*注:有时候官方镜像下载较慢,可以试试`203.195.193.251:5000`镜像,如
```
$ sudo docker pull 203.195.193.251:5000/centos
```
完成后,即可随时创建一个容器了。
```
$ sudo docker run -t -i centos /bin/bash
bash-4.1#
```
###上传镜像
用户也可以通过`docker push`命令把自己创建的镜像上传到Docker Hub中来共享。
```
$ sudo docker push ouruser/sinatra
The push refers to a repository [ouruser/sinatra] (len: 1)
Sending image list
Pushing repository ouruser/sinatra (3 tags)
```

View File

@ -1,4 +1,4 @@
##镜像的工作原理 ##镜像的实现原理
Docker镜像是怎么实现增量的修改和维护的 Docker镜像是怎么实现增量的修改和维护的
每个docker都有很多层次构成docker使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。 每个docker都有很多层次构成docker使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。

View File

@ -1,37 +1,29 @@
##列出本地镜像 ## 列出本地镜像
使用`docker images`显示本机上的镜像 使用`docker images`显示本地已有的镜像。
``` ```
$ sudo docker images $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
training/webapp latest fc77f57ad303 3 weeks ago 280.5 MB
ubuntu 13.10 5e019ab7bf6d 4 weeks ago 180 MB
ubuntu saucy 5e019ab7bf6d 4 weeks ago 180 MB
ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB ubuntu 12.04 74fe38d11401 4 weeks ago 209.6 MB
ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB ubuntu precise 74fe38d11401 4 weeks ago 209.6 MB
ubuntu 12.10 a7cf8ae4e998 4 weeks ago 171.3 MB
ubuntu quantal a7cf8ae4e998 4 weeks ago 171.3 MB
ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB ubuntu 14.04 99ec81b80c55 4 weeks ago 266 MB
ubuntu latest 99ec81b80c55 4 weeks ago 266 MB ubuntu latest 99ec81b80c55 4 weeks ago 266 MB
ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB ubuntu trusty 99ec81b80c55 4 weeks ago 266 MB
ubuntu 13.04 316b678ddf48 4 weeks ago 169.4 MB ...
ubuntu raring 316b678ddf48 4 weeks ago 169.4 MB
ubuntu 10.04 3db9c44f4520 4 weeks ago 183 MB
ubuntu lucid 3db9c44f4520 4 weeks ago 183 MB
``` ```
在列出信息中,可以看到几个字段信息 在列出信息中,可以看到几个字段信息
* 来自于哪个仓库比如ubuntu * 来自于哪个仓库比如ubuntu
* 镜像的标记,比如 14.04 * 镜像的标记,比如 14.04
* 它的ID号唯一 * 它的`ID`号(唯一)
* 什么时候被创建的 * 创建时间
* 镜像大小 * 镜像大小
仓库中可能有同一个镜像的多个发行版比如ubuntu镜像就有10.04、12.04、12.10、13.04、14.04等发行版,每个发行版的标记都不同可以使用tag信息来指定使用某一个镜像来启动容器 其中镜像的`ID`唯一标识了镜像,注意到`ubuntu:14.04`和`ubuntu:trusty`具有相同的镜像`ID`,说明它们实际上是同一镜像。
`TAG`信息用来标记来自同一个仓库的不同镜像。例如`ubuntu`仓库中有多个镜像,通过`TAG`信息来区分发行版本例如10.04、12.04、12.10、13.04、14.04等。例如下面的命令指定使用镜像`ubuntu:14.04`来启动一个容器。
``` ```
$ sudo docker run -t -i ubuntu:14.04 /bin/bash $ sudo docker run -t -i ubuntu:14.04 /bin/bash
$ sudo docker run -t -i ubuntu:12.04 /bin/bash
``` ```
上面的命令会从指定镜像启动一个容器并提供用户控制台来交互。用户登录进入后可以看到系统内运行了一个bash进程。
如果你不指定具体的发行版比如仅使用ubuntu那么Docker会使用最新的发行版ubuntu:latest 如果不指定具体的标记,则默认使用`latest`标记信息

38
image/pull.md Normal file
View File

@ -0,0 +1,38 @@
## 获取镜像
可以使用`docker pull`命令来从仓库获取所需要的镜像。
下面的例子将从Docker Hub仓库下载一个Ubuntu 12.04操作系统的镜像。
```
$ sudo docker pull ubuntu:12.04
Pulling repository ubuntu
ab8e2728644c: Pulling dependent layers
511136ea3c5a: Download complete
5f0ffaa9455e: Download complete
a300658979be: Download complete
904483ae0c30: Download complete
ffdaafd1ca50: Download complete
d047ae21eeaf: Download complete
```
下载过程中,会输出获取镜像的每一层信息。
该命令实际上相当于`$ sudo docker pull registry.hub.docker.com/ubuntu:12.04`命令,即从注册服务器`registry.hub.docker.com`中的`ubuntu`仓库来下载标记为`12.04`的镜像。
有时候官方仓库注册服务器下载较慢,可以从其他仓库下载。
从其它仓库下载时需要指定完整的仓库注册服务器地址。例如
```
$ sudo docker pull www.dockerpool.com:5000/ubuntu:12.04
Pulling www.dockerpool.com:5000/ubuntu
ab8e2728644c: Pulling dependent layers
511136ea3c5a: Download complete
5f0ffaa9455e: Download complete
a300658979be: Download complete
904483ae0c30: Download complete
ffdaafd1ca50: Download complete
d047ae21eeaf: Download complete
```
完成后即可随时使用该镜像了例如创建一个容器让其中运行bash应用。
```
$ sudo docker run -t -i ubuntu:12.04 /bin/bash
root@fe7fc4bd8fc9:/#
```