change the struct of image chapter, add export/import and join the docker hub related operations together
parent
615bb9f517
commit
c50e2aaf60
|
@ -15,10 +15,9 @@
|
|||
* [CentOS](install/centos.md)
|
||||
* [镜像](image/README.md)
|
||||
* [列出](image/list.md)
|
||||
* [获取](image/pull.md)
|
||||
* [查找](image/search.md)
|
||||
* [使用Docker Hub管理镜像](image/dockerhub.md)
|
||||
* [创建](image/create.md)
|
||||
* [上传](image/push.md)
|
||||
* [导出和导入](image/import_export.md)
|
||||
* [移除](image/rmi.md)
|
||||
* [底层原理](image/internal.md)
|
||||
* [容器](container/README.md)
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
## 使用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
|
||||
```
|
||||
下载过程中,会输出获取镜像的每一层信息。
|
||||
|
||||
下载完成后,即可随时创建一个容器了。
|
||||
```
|
||||
$ 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)
|
||||
```
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
##导出和导入镜像
|
||||
|
||||
###导出镜像
|
||||
如果要导出本地的镜像到文件,可以使用`docker export`命令。
|
||||
```
|
||||
$sudo docker ps -a
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
7691a814370e ubuntu:14.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test
|
||||
$sudo docker export 7691a814370e > ubuntu.tar
|
||||
|
||||
```
|
||||
|
||||
*注意:也可以使用`docker save`命令导出一个镜像,它会记录从基础镜像到目前状态的所有历史记录,文件体积较大。
|
||||
|
||||
###导入镜像
|
||||
可以使用`docker import`从导出的本地文件中再导入镜像,例如
|
||||
```
|
||||
$cat ubuntu.tar | sudo docker import - test_repo/localubuntu:v1.0
|
||||
```
|
||||
|
||||
此外,也可以通过指定URL或者某个目录来导入,例如
|
||||
```
|
||||
$sudo docker import http://example.com/exampleimage.tgz example/imagerepo
|
||||
```
|
||||
|
|
@ -2,9 +2,10 @@
|
|||
|
||||
Docker镜像是怎么实现增量的修改和维护的?
|
||||
每个docker都有很多层次构成,docker使用 [Union FS](http://en.wikipedia.org/wiki/UnionFS) 将这些不同的层结合到一个镜像中去。
|
||||
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是一种特殊的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。这样的话,不同容器可以共享一些文件系统层,同时再加上自己独有的改动层,提高了存储的效率。
|
||||
|
||||
通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个disk挂到同一个目录下, 另一个更常用的就是将一个 readonly 的 branch 和一个 writeable 的 branch 联合在一起,Live CD正是基于此方法可以允许在 OS 镜像不变的基础上允许用户在其上进行一些写操作。
|
||||
AUFS (AnotherUnionFS) 就是一种 Union FS, AUFS支持为每一个成员目录(类似Git 分支)设定只读(readonly)、读写(readwrite)和写出(whiteout-able)权限, 同时 AUFS 里有一个类似分层的概念, 对只读权限的分支可以逻辑上进行修改(增量地, 不影响 只读部分的)。
|
||||
|
||||
通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个disk挂到同一个目录下, 另一个更常用的就是将一个只读的分支和一个可写的 分支联合在一起,Live CD正是基于此方法可以允许在 OS 镜像不变的基础上允许用户在其上进行一些写操作。
|
||||
Docker 在 AUFS 上构建的容器也正是如此。
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
##获取镜像
|
||||
可以使用docker pull命令来预先下载所需要的镜像。
|
||||
|
||||
下面的例子下载一个centos镜像。
|
||||
```
|
||||
$ sudo docker pull centos
|
||||
Pulling repository centos
|
||||
b7de3133ff98: Pulling dependent layers
|
||||
5cc9e91966f7: Pulling fs layer
|
||||
511136ea3c5a: Download complete
|
||||
ef52fb1fe610: Download complete
|
||||
```
|
||||
下载过程中,会输出获取镜像的每一层信息。
|
||||
|
||||
下载完成后,即可随时创建一个容器了。
|
||||
```
|
||||
$ sudo docker run -t -i centos /bin/bash
|
||||
bash-4.1#
|
||||
```
|
|
@ -1,8 +0,0 @@
|
|||
##上传镜像
|
||||
用户也可以把自己创建的镜像上传到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,27 +0,0 @@
|
|||
##查找images
|
||||
|
||||
docker hub是一个公共仓库,供用户上传和下载制作好的不同用途的镜像,我们可以在docker hub的网站上来查找满足自己需求的镜像。
|
||||
|
||||
使用docker search命令。比如,当开发团队需要ruby和sinatra作为web应用程序的开发时,可以使用docker search 来搜索合适的镜像,使用关键字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的镜像。其中包括镜像名字、描述、星级(表示该image的受欢迎程度)、是否官方创建、是否自动创建。
|
||||
官方的镜像是由stackbrew项目组创建和维护的,autimated 资源允许用户验证image的来源和内容。
|
||||
|
||||
现在可以下载使用training/sinatra镜像。
|
||||
|
||||
到目前为止,我们看到了2种镜像资源。
|
||||
一种是类似ubuntu这样的基础镜像,被称为基础或根镜像。这些基础镜像是由docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
|
||||
还有一种类型,比如training/sinatra镜像。它是由docker的用户创建并维护的,你可以通过指定image名字的前缀来指定使用某个用户的镜像,比如training。
|
Loading…
Reference in New Issue