首页 > 其他 > 详细

Docker(五):镜像

时间:2015-11-17 18:27:54      阅读:252      评论:0      收藏:0      [点我收藏+]

一,什么是镜像?

      Docker的镜像文件是由文件系统叠加而成的。最底端是一个引导文件系统,即bootfs。Docker用户几乎永远没有机会和引导文件有什么交互,实际上,当一个容器启动之后,容器就会被移动到内存中,而创建容器镜像文件中的引导文件系统就会被卸载。

      Docker镜像的第二层是root文件系统rootfs,位于引导文件系统之上,rootfs可以是一种或者多种操作系统的文件系统(比如说Debian或者Ubuntu的文件系统)。在传统的Linux引导过程中,root文件系统最先会以只读的方式加载,当引导完成并完成了完整性检查之后,才会切换到读写模式。但是在Docker里,root的文件系统只能为只读状态,并且Docker利用联合加载(union mount)技术又会在root文件系统上加载更多的只读文件系统。联合加载是指一次同时加载多个文件系统,但是外面只能看到一个文件系统。联合加载会将各层文件系统叠加在一起,这样最终的文件系统会包含所有底层的文件和目录。Docker将这样的文件系统称为镜像。一个镜像可以放在另一个镜像的顶部,位于下部的镜像称之为父镜像,可以以此类推,直到最底部,最底部的镜像是基础镜像。最后,当从一个镜像启动容器时,Docker会在该镜像的最顶层加载一个读写文件系统。我们想在Docker中运行的程序就是在这个读写层中执行的。

      当Docker第一次启动一个容器的时候,初始读写层是空的。当文件系统发生变化时,这些变化都会应用到这一层上。比如,想修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层,该文件的只读版本仍然存在,但是已经被读写层中的该文件副本所隐藏。通常这种机制被称为写时复制,这也是Docker如此强大的技术之一。每一个镜像层都是只读的,并且以后永远都不会变化。当创建一个容器的时候,Docker会构建一个镜像栈,并在栈顶添加一个读写层,这个读写层加上其下面的镜像层以及一些配置数据,就构成了一个容器。

     在基础镜像中,比如,Ubuntu:14.04中,是不包含Linux的内核的。

二,获取镜像

      可以使用docker pull命令从仓库中获取需要的镜像。 如下获取Ubuntu12.04操作系统的镜像

技术分享

下载过程中,会输出获取镜像的每一层信息。该命令相当于$ sudo docker pull registry.hub.docker.com/ubuntu:12.04,即从注册服务器registry.hub.docker.com中的ubuntu仓库来下载标记为12.04的镜像。

有时候官方的仓库会比较慢,那么可以自己指定从其他的仓库中下载,从其他仓库中下载镜像的时候需要指定完整的仓库注册服务器地址。如下:

$ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04  

三,列出镜像

      下载镜像之后,我们可以查看自己本地的镜像,使用$ sudo docker images

      本地的镜像都存储在

二,使用镜像创建容器

      Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库)。

Docker(五):镜像

原文:http://www.cnblogs.com/hujingwei/p/4972174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!