From c50e2aaf60865d3b7eba55c189a81efdd02c4ff6 Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Wed, 17 Sep 2014 14:33:06 +0800 Subject: [PATCH] change the struct of image chapter, add export/import and join the docker hub related operations together --- SUMMARY.md | 5 ++-- image/dockerhub.md | 58 ++++++++++++++++++++++++++++++++++++++++++ image/import_export.md | 25 ++++++++++++++++++ image/internal.md | 7 ++--- image/pull.md | 19 -------------- image/push.md | 8 ------ image/search.md | 27 -------------------- 7 files changed, 89 insertions(+), 60 deletions(-) create mode 100644 image/dockerhub.md create mode 100644 image/import_export.md delete mode 100644 image/pull.md delete mode 100644 image/push.md delete mode 100644 image/search.md diff --git a/SUMMARY.md b/SUMMARY.md index 734a589..6bdf21c 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -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) diff --git a/image/dockerhub.md b/image/dockerhub.md new file mode 100644 index 0000000..6976a3d --- /dev/null +++ b/image/dockerhub.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) +``` + diff --git a/image/import_export.md b/image/import_export.md new file mode 100644 index 0000000..2164841 --- /dev/null +++ b/image/import_export.md @@ -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 +``` + diff --git a/image/internal.md b/image/internal.md index d956d4f..e80f747 100644 --- a/image/internal.md +++ b/image/internal.md @@ -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 上构建的容器也正是如此。 diff --git a/image/pull.md b/image/pull.md deleted file mode 100644 index 6503310..0000000 --- a/image/pull.md +++ /dev/null @@ -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# -``` diff --git a/image/push.md b/image/push.md deleted file mode 100644 index c7e6594..0000000 --- a/image/push.md +++ /dev/null @@ -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) -``` diff --git a/image/search.md b/image/search.md deleted file mode 100644 index 0fece29..0000000 --- a/image/search.md +++ /dev/null @@ -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。