docker镜像和仓库

      在Docker简介中已经对docker做了简单介绍,其中提到docker重要组件——镜像,docker镜像是用于启动容器的基石,那什么是镜像?如何管理镜像?如何创建、存储、共享自己创建的镜像?
一、镜像及其结构
    docker镜像是由文件系统叠加而成,最低端是一个引导文件系统bootfs,当启动一个容器时,文件系统会被移动到内存中,而低端引导文件系统会被卸载以留出更多的内存。
    docker采用联合加载 union mount技术,即一次同时加载多个文件系统,在外看来只能看到一个文件系统,实际则按顺序加载各层文件系统最后叠加到一起,这样最终形成的文件系统会包含所有底层的文件和目录。
    这个文件系统就是镜像image。一个镜像可放到另一镜像的顶部。位于下面的镜像被称作父镜像parent image,依次往下,最底部的被称为基础镜像base image。这种分层的镜像结构称为 径向分层框架 image-layering framework。当从镜像中启动一个容器时,docker会在该镜像的最顶层加载一个读写文件系统。我们在docker中运行程序,就是在这个读写层中执行的。


二、镜像文件系统写时复制机制
    docker在第一次启动一个容器时,初始的读写层是空的,当文件系统(镜像)发生变化时,每一个变化都会依次添加一层layer(如添加os系统为基础镜像,依次添加nginx、web应用服务器、项目工程)。如果想修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层,只读版本依然存在,但已经被读写层中该文件的copy副本所隐藏。这就是docker的写时复制copy on write机制。
    该机制使得每个镜像层都是制度的,且永远不会变化。当创建一个新容器时,docker会构建出一个新的镜像栈,并在栈的最顶层添加一个读写层,在这个读写层上对镜像层进行数据配置,就构成了一个容器。这种写时复制copy on write和镜像分层框架 image-layering framework,使得容器在修改时,能快速构建镜像并运行包含我们自己的应用程序和服务容器。

三、镜像和仓库
    镜像image从仓库registry中下载下来,默认的registry仓库是有docker公司运营提供的公共registry服务即docker hub。仓库可想象成git代码仓库,包含了镜像、层、镜像相关的元数据。每个仓库都可以存放很多镜像(如os系统镜像,nginx、web应用服务器等镜像),使用tag标签来区分不同镜像,如Ubuntu 12.04,Ubuntu 13.04 ,使用docker pull命令拉取仓库中的所有内容。
四、操作镜像
1、列出镜像
    sudo docker images 
    获得所有镜像列表,本地镜像都保存在docker的宿主机/var/lib/docker目录下,所有容器在/var/lib/docker/containers目录下
2、查找镜像
    docker search 查找docker 公共仓库中所有可用镜像,如sudu docker search puppet
查找重用
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值