1、获取镜像
docker pull NAME[:TAG]
# pull 子命令支持的选项主要包括:
# -a, --all-tags=true|false: 是否获取仓库中的所有镜像,默认为否。
以上命令直接从DH镜像源来下载镜像。其中,NAME是镜像仓库的名称,TAG是镜像的标签(一般是版本信息)。如果不显示指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。
下载时会获取并存储镜像的各层信息。当不同的镜像包括相同的层时,本地仅存储层的一份内容,减少了需要的存储空间。
2、查看镜像信息
2.1、使用images 命令列出镜像
docker images
# images 子命令:
# man docker-images
2.2、使用tag命令添加镜像标签
docker tag OLDNAME:TAG NEWNAME:TAG
2.3、使用inspect 命令查看详细信息
docker inspect NAME:TAG
以上命令返回的是JSON格式的消息,如果只需要查看某一项内容时,可以使用参数 -f 来指定,例如,获取镜像的Architecture:
docker inspect -f {{ ".Architecture" }}
2.4、使用history命令查看镜像历史
docker history NAME:TAG
# 使用 --no-trunc 选项来输出完整命令
3、搜寻镜像
docker search keyword
# --automated=true|false: 仅显示自动创建的镜像,默认为否;
# --no-trunc=true|false: 输出信息不截断显示,默认为否;
# -s, --stars=X: 指定仅显示评价为指定星级以上的镜像,默认为0,即输出所有镜像。
4、删除镜像
4.1、使用标签删除镜像
docker rmi IMAGE [IMAGE...]
其中IMAGE可以为标签或ID(NAME:TAG)
如果一个镜像有多个标签,则只会删除指定标签,并不影响镜像文件。
但一个镜像只剩下一个标签时,则会彻底删除镜像。
4.2、使用镜像ID 删除镜像
当使用docker rmi命令,并且后面跟上镜像的ID时,会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身。
当有该镜像创建的容器存在时,镜像文件默认是无法被删除的。
试图删除该镜像,Docker会提示有容器正在运行,无法删除
# 查看本机上存在的所有容器
docker ps -a
# 若要强行删除,使用 -f 参数
docker rmi -f NAME:TAG
并不推荐使用-f 参数来强制删除一个存在容器依赖的镜像。正确的做法是,先删除依赖该镜像的所有容器,再来删除镜像。
# 先删除容器
docker rm containerID
# 再使用ID删除镜像
docker rmi IMAGEID
5、创建镜像
创建镜像的方法主要有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。
5.1、基于已有镜像的容器创建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
在容器中修改后,提交到一个新的镜像中。
5.2、基于本地模板导入
用户可以直接从一个操作系统模板文件导入一个镜像,主要使用 docker import 命令。 命令格式为:
docker import [OPTIONS] file | URL|-[REPOSITORY[:TAG]]
要直接导入一个镜像,可以使用OpenVZ提供的模板来创建,或者用其他已导出的镜像模板来创建。
eg:
cat *.tar.gz | docker import - NAME:TAG
6、存出和载入镜像
6.1、存出镜像
docker save -o *.tar NAME:TAG
本地就会生成一个*.tar 文件
6.2、载入镜像
docker load --input *.tar
或
docker load < *.tar
7、上传镜像
docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/] NAME[:TAG]