# 镜像简述

      docker镜像是一个只读的模版,镜像可以用来创建docker容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一 个已经做好的镜像来直接使用。

# 镜像的实现原理

     每个镜像都由很多层次构成,Docker 使用 Union FS 将这 些不同的层结合到一个镜像中去。 通常 Union FS 有两个用途, 一方面可以实现不借助 LVM、RAID 将多个 disk 挂到同一个目录下,另一个更 常用的就是将一个只读的分支和一个可写的分支联合在一起,Live CD 正是基于此方法可以允许在镜像不 变的基础上允许用户在其上进行一些写操作。 Docker 在 AUFS 上构建的容器也是利用了类似的原理。

# 查看本地镜像

# 显示本地已有镜像
docker images

【容器】Docker镜像_docker

       从上述信息中,可以看到几个字段信息:

             >  来自于哪个仓库

             >  镜像标记

             >  镜像ID(唯一)

             >  创建时间

             >  镜像大小

            备注:其中镜像的 ID 唯一标识了镜像,注意到 ubuntu:14.04 和 ubuntu:trusty 具有相同的镜像 ID ,说明 它们实际上是同一镜像。

# 创建本地镜像

       1、先使用下载好的镜像启动容器

docker run -it  --name get_tree ubuntu /bin/bash

       2、在容器中添加tree应用

root@1d634c0ef086:/# apt-get install tree

       3、提交更新后容器

root@ubuntu:~# docker commit -m "Added tree service" -a "Docker zml" 1d634c0ef086 ubuntu:v2

-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;
-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;
最后指定目标镜像的仓库名和 tag 信息。
创建成功后会返回这个镜像的 ID 信息。

       4、使用docker images查看创建的镜像

【容器】Docker镜像_docker_02

# 使用docker tag 更改镜像标签

【容器】Docker镜像_本地文件_03

# 从本地文件系统导入镜像

sudo  cat ubuntu-14.04-x86_64-minimal.tar.gz    |docker import  - ubuntu:14.04

# 上传镜像

docker  push  ouruser/sinatra

# 存出镜像

# 导出镜像到本地文件
docker save -o ubuntu_14.04.tar ubuntu:14.04

# 从本地文件系统导入镜像

# 使用docker load把本地文件导入到本地镜像库
docker load --input ubuntu_14.04.tar

docker load < ubuntu_14.04.tar

# 移除本地镜像

docker  rmi training/sinatra