mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-25 14:38:54 +00:00
restruct the chapter to make it more understanding
This commit is contained in:
parent
6d890cab80
commit
8add83dcc2
@ -12,12 +12,12 @@
|
||||
* [Ubuntu](install/ubuntu144.md)
|
||||
* [CentOS](install/centos.md)
|
||||
* [镜像](image/README.md)
|
||||
* [获取镜像](image/pull.md)
|
||||
* [列出](image/list.md)
|
||||
* [使用Docker Hub](image/dockerhub.md)
|
||||
* [创建](image/create.md)
|
||||
* [存出和载入](image/save_load.md)
|
||||
* [移除](image/rmi.md)
|
||||
* [底层原理](image/internal.md)
|
||||
* [实现原理](image/internal.md)
|
||||
* [容器](container/README.md)
|
||||
* [启动](container/run.md)
|
||||
* [守护态运行](container/daemon.md)
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
在之前的介绍中,我们知道镜像是Docker的三大组件之一。
|
||||
|
||||
Docker把下载的镜像存储到本地,如果一个镜像不在本地,Docker会从一个镜像仓库下载,默认的仓库是 Docker Hub 公共仓库。
|
||||
Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会从镜像仓库下载(默认是Docker Hub公共注册服务器中的仓库)。
|
||||
|
||||
接下来将介绍更多关于镜像的内容,包括:
|
||||
* 使用和管理本地主机上的镜像
|
||||
* 创建一个基础的镜像
|
||||
* 上传镜像到Docker Hub(公共镜像仓库)
|
||||
本章将介绍更多关于镜像的内容,包括:
|
||||
* 从仓库获取镜像;
|
||||
* 管理本地主机上的镜像;
|
||||
* 介绍镜像实现的基本原理。
|
||||
|
@ -145,3 +145,12 @@ docker images
|
||||
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
|
||||
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)
|
||||
```
|
||||
|
@ -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)
|
||||
```
|
||||
|
@ -1,4 +1,4 @@
|
||||
##镜像的工作原理
|
||||
##镜像的实现原理
|
||||
|
||||
Docker镜像是怎么实现增量的修改和维护的?
|
||||
每个docker都有很多层次构成,docker使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。
|
||||
|
@ -1,37 +1,29 @@
|
||||
## 列出本地镜像
|
||||
使用`docker images`显示本机上的镜像
|
||||
使用`docker images`显示本地已有的镜像。
|
||||
```
|
||||
$ sudo docker images
|
||||
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 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 latest 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
|
||||
* 镜像的标记,比如 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:12.04 /bin/bash
|
||||
```
|
||||
上面的命令会从指定镜像启动一个容器,并提供用户控制台来交互。用户登录进入后可以看到系统内运行了一个bash进程。
|
||||
|
||||
如果你不指定具体的发行版,比如仅使用ubuntu,那么Docker会使用最新的发行版ubuntu:latest。
|
||||
如果不指定具体的标记,则默认使用`latest`标记信息。
|
||||
|
38
image/pull.md
Normal file
38
image/pull.md
Normal 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:/#
|
||||
```
|
Loading…
Reference in New Issue
Block a user