1、简介
docker运行前需要本地存在对应的镜像,若镜像不存在本地,docker会先尝试从默认的镜像仓库下载(Docker Hub公共注册服务器中的仓库)。用户也可以配置,使用自定义的镜像仓库。
2、列出镜像列表
sudo docker images
当以普通用户身份去使用docker images时,出现以下错误:
那就要加上sudo
各个选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
使用docker inspect命令可以获取某个镜像的详细信息
sudo docker inspect ***
3、获取镜像
镜像是docker运行容器的前提。使用docker pull命令从网络上下载镜像。
sudo docker pull NAME[:TAG]
若不显示制定tag,默认选择latest标签,即下载最新版本的镜像。
这个例子下载的是ubuntu:latest镜像,是最新的版本的镜像。可以从图中看到,镜像文件一般由若干层组成,行首的字符串代表各层的ID。
也可以根据指定标签下载特定版本的某一镜像,如14.04标签
sudo docker pull ubuntu:14.04
还可以从其他注册服务器的仓库下载,如DockerPool社区的镜像源dl.dockerpool.com下载最新的ubuntu镜像。
sudo docker pull dl.dockerpool.com:5000/ubuntu
4、搜寻镜像
搜索远端仓库中共享的镜像
sudo docker search TEAM
返回了很多包含关键字的镜像,包括镜像名字、描述、星级(受欢迎度)、是否官方创建、是否自动创建等等。
5、删除镜像
5.1、使用镜像的标签删除镜像
sudo docker rmi IMAGE[IMAGE...]
iMAGE可以为标签或ID
比如我先获取一个镜像ubuntu 14.04,可以看到存在;
然后我尝试删除。
果然删除成功。
5.2、使用镜像的ID删除镜像
使用docker rmi跟上ID后,会先尝试删除所有指向该镜像的标签,然后删除镜像文件本身。
但是,当有该镜像创建的容器存在时,镜像文件是无法被删除的。比如之前创建的hello-world 使用docker ps -a 可以看到本机上存在的所有容器。可以看到,后台存在一个退出状态的容器,是基于hello-world和hello-world:latest镜像创建的,师徒删除该镜像,docker会提示有容器在运行,无法删除。
强行删除在rmi后面加个-f
6、创建镜像
有三种方法:基于已有镜像的容器创建、基于本地模板导入、基于dockerfile创建。
6.1、基于已有镜像的容器创建
docker commit [options] CONTAINER [REPOSITORY[:TAG]]
主要选项包括:
- -a,--author="" 作者信息;
- -m,--message=""提交消息;
- -p,--pause=true 提交时暂停容器运行
演示如何创建一个新镜像。首先启动一个镜像。由于我本地没有这个镜像,所以会先下载。
然后,在其中进行修改操作。图中,是创建一个test文件,之后退出。
记住容器的ID为e65004f2033f;
此时该容器跟之前的镜像相比,已经发生了改变。用docker commit 命令来提交为一个新的镜像。提交时候用id或名称来指定容器
返回的是新创建镜像的ID信息;查看本地镜像列表,可以看到已创建。
7、存出和载入镜像
7.1、存出镜像
sudo docker save -o
例如,存出本地的ubuntu:14.04镜像为文件ubuntu_14.04.tar
7.2、载入镜像
从存出的本地文件中再导入到本地镜像库
sudo docker load
例子:从文件ubuntu_14.04.tar导入镜像到本地列表,如下图所示的两种方式: