原文出自:http://blog.csdn.net/anxpp/article/details/52464806
上一篇文章也说了,镜像是Docker三大核心概念之一。
Docker运行容器前需要本地存在对应的镜像,如果本地不存在,会尝试从默认(Docker Hub)的镜像仓库获取,也可以配置使用自定义的镜像仓库。
镜像是Docker的基础,运行容器的前提。
可以使用命令从网络上下载镜像,命令如下(如果不是Root用户需要在命令前加上sudo命令):
docker pull NAME[:TAG]
如果不显示的指定TAG,会默认选择latest标签的镜像下载。
比如要下载一个最新的ubuntu镜像:
docker pull ubuntu
这里实际上下载的是latest标签的镜像,上面的命令等同于:
docker pull ubuntu:latest
下载过程会看到镜像文件实际是又多个层组成的,每行最前面的内容就是这层的ID。
层(Layer)是AUFS(一种联合文件系统)中的重要概念,是实现增量保存于更新的基础。
如果需要下载指定版本的镜像,可以如下:
docker pull ubuntu:14.04
如果想从指定的注册服务器的仓库下载镜像,可以像下面这样:
docker pull registry.hub.docker.com/ubuntu:latest
下载完成后就可以启动了:
docker -t -i ubuntu /bin/bash
这里的命令后面会解释。
docker image命令可以列出本地已有的所有镜像:
docker inages
显示的字段分别表示:
1、来自于哪个仓库
2、镜像的标签信息
3、镜像的唯一ID
4、创建时间
5、镜像大小
其中镜像的ID比较重要,经常会用到。
标签TAG用于标示同一仓库不同版本的镜像。
为了使用方便,还可以通过docker tag命令为本地镜像添加新的标签:
docker tag ubuntu:latest ubuntu:newtag
这时查看镜像列表会多出来一个镜像,但是其ID还是一样的。
使用docker inspect命令可以获取镜像的详细信息:
docker inspecct 镜像ID
这里返回的是一个json格式的字符串,如果只想获取其中指定的内容,可以通过-f指定参数:
docker inspect -f {{".Architecture"}} 550
此时返回的就是Architecture信息。
任何时候,在指定ID时都可以只指定前几个字符来代替完整的ID字符串,前提是能唯一标示。
docker search命令可以搜索远程仓库中的公共镜像,默认为Docker Hub仓库。
用法为:
docker search TERM
支持的参数如下:
1、--automated=false:仅显示自动创建的镜像
2、--no-trunc=false:输出信息不截断显示
3、-s, --stars=0:指定仅显示评论为指定星级以上的镜像
比如要搜索带lamp关键字的镜像:
docker search lamp
之后返回的信息包括:镜像名字、描述、星级、是否官方创建和是否自动创建等。
默认的输出结果将按星级排序,官方镜像说明是官方项目组创建和维护的,automated资源允许用户验证镜像的来源和内容。
可以使用镜像的标签和ID删除镜像。
命令格式为:
docker rmi IMAGE[IMAGE...]
IMAGE可以为标签或者ID。
当同一个镜像有多个标签的时候,docker rmi命令只是删除了该镜像多个标签中指定的标签,并不影响镜像文件。
如果镜像只剩下一个标签的时候,使用docker rmi命令会彻底删除该镜像。
如果docker rmi后面跟上ID删除时,会尝试删除该镜像的所有标签后删除镜像文件本身。
如果要删除逇镜像创建的容器存在时,镜像文件默认试试无法被删除的。如果直接执行删除命令,会提示有容器正在运行(即使容器已经Exit)。但是可以加上参数-f强行删除:
docker rmi -f ID或标签
不过并不推荐这么做,因为这可能会导致一些遗留问题,如果一定要删除,推荐先删除该镜像的所有容器,然后再删除镜像,如果有容器不能删除,那么这个镜像也不应该直接被删除。
删除镜像时会输出类似于获取镜像时一样的各层信息。
创建镜像有三种方式:
1、基于已有镜像创建
2、基于本地模板导入
3、基于Dockerfile文件创建
其中在大规模应用场景,一般使用第三种方式,所以在此处不会详谈(后续文章会详细介绍),这里主要介绍前两种。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
其中的选项:
下面是一个例子:
docker commit -m "message" -a "anxpp" 容器ID 新的容器TAG 新的容器ID
之后就可以通过docker images命令查看到创建的容器了。
比如要导入下载好的ubuntu模板为镜像:
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
然后使用docker images就可以看到镜像了。
可能有时候我们想直接导出镜像为文件供其他地方使用,docker提供了这样的功能。
使用docker save命令将镜像保存为文件,如:
docker save -o ubuntu.tar ubuntu:14.04
6.2、从文件导入镜像
使用docker load命令将文件导入为镜像,如:
docker load < ubuntu.tar
此时会导入镜像以及相关的元数据信息,如标签等。