Docker入门与实战
二.Docker镜像的使用
1.获取镜像
命令:docker [image] pull image-name[:tag]
说明:
name为镜像仓库名称,严格来说,该name应该由注册服务器地址+镜像仓库名称组成,这样做可以避免不同仓库(注册服务器)下的镜像名称冲突的问题,如果该注册服务器地址省略,则默认从Docker官方注册服务器(即registry.hub.docker.com)拉取。
tag为镜像的标签(大多数为版本信息),若省略,则默认拉取最新版本的镜像
e.g. docker pull ubuntu:18.04
其他附加参数:
-a或--all-tags=true|false : 是否获取仓库中的全部镜像,默认为false。
--disable-content-trust : 取消镜像的内容校验,默认为true。
--registry-mirror=镜像仓库地址 : 指定镜像代理服务地址
--no-trunc=true|false : 对输出结果中太长的部分是否采取截断操作,默认为true
-f或--filter=[] : 过滤列出的镜像
--format="你期望的数据输出格式" :控制输出格式,例如,你可以在格式字符串中以.ID代表输出的ID信息,以.Repository代表仓库信息等
2.查看镜像信息
命令 : docker images 或 docker image ls
说明 : 列出本地主机上已有的镜像的基本信息
列表字段说明:
repository : 来源仓库
tag : 镜像的标签信息(大多数为镜像版本信息),可用于标识来自于同一仓库的不同标签(版本)的镜像
image id : 镜像的唯一标识,具有唯一性
created : 镜像最后的更新时间
size : 镜像的大小
一些可选参数:
-a或--all=true|false : 是否列出所有的镜像文件(包括临时的镜像文件),默认为false。
-q或--quiet=true|false :是否仅输出ID信息,默认为false。
3.更改镜像标签信息(Tag)
命令 :docker tag 原镜像仓库名称:原镜像标签信息 自定义镜像仓库名称:自定义镜像标签信息
说明 :类似于给目标镜像起了一个别名,类似于Linux系统中的链接文件的作用
e.g.docker tag hello-world:latest hello-world:promax
4.查看镜像的详细信息
命令 :docker [image] inspect 镜像仓库名称:镜像标签信息
说明 :能够获取到目标镜像的制作者,适应架构,各层的数字摘要等信息。由于返回的信息为JSON格式,因此,我们可以通过追加 -f JSON中的某个键 以进一步查看某一项的信息。
e.g. : docker image inspect nginx:latest
e.g. :docker image inspect -f {{".Id"}} nginx:latest
(此处省略500字...)
5.查看镜像历史
命令 :docker history 镜像仓库名称:镜像标签信息
说明 :查看镜像各层的创建信息
e.g. :docker history nginx:latest
6.搜索镜像
命令 :docker search 镜像仓库名称
e.g. : docker search redis
其他参数说明:
-f或--filter=[] : 过滤列出的镜像
--format="你期望的数据输出格式" :控制输出格式,例如,你可以在格式字符串中以.ID代表输出的ID信息,以.Repository代表仓库信息等
--limit 输出结果个数 :限制输结果的个数,默认输出25个符合条件的结果
--no-trunc : 不截断输出结果的任何部分
7.删除与清理镜像
命令:docker rmi image1 image2 image3...或 docker image rm mage1 image2 image3...
说明 :其中的imageN可以是 镜像仓库名称:镜像标签信息,也可以是镜像ID
如果删除的是 镜像仓库名称:镜像标签信息,若该镜像仓库在本地存在多个(多个不同版本的同一镜像),因此删除其中一个镜像标签,仅仅会删除该指向同一镜像的链接,只有删除最后一个镜像标签的情况下,才会删除该镜像所有文件层;如果删除的是镜像ID,由于不同版本的镜像所对应的镜像ID都是相同的,所以,此时将会删除所有指向该镜像的不同版本的本地镜像标签,同时也会删除该镜像的所有文件层。
其他参数说明:
-f或-force : 强制删除,即使有其之上的容器处在运行状态
-no-prunc : 不清理未带标签的父镜像
8.清理镜像
命令 :docker image prune
相关参数说明:
-a或--all : 删除所有无用镜像,包括临时镜像
-filter filter-expression : 删除符合过滤器条件的镜像
-f或-force :强制删除镜像,不再进行二次确认
9.创建镜像
(1)第一种方法:基于已有容器创建:
命令:docker [container] commit containerID [newImageName:newImageTag]
e.g. :
docker commit -m "commit test" -a "Dage" ac0977cebae3 dage_redis:promax
相关参数说明:
-a或--author=" " : 作者信息
-c或--change=[] : 提交的时候执行dockerfile中的指令
-m或--messag=" " : 提交信息
-p或--pause=true|false : 提交时,当前容器是否暂停运行
(2)第二种方法:基于本地模板创建:
命令 :docker [image] import file|URL|-[respoitory:tag]
(3)第三种方法:基于Dockerfile创建:
命令 :docker [image] build [-t repository:tag]
说明 :Dockerfile是一个文本文件,专门用于描述基于父容器创建某个新镜像的过程。
10.载入与导出镜像
(1)载入镜像
命令 :docker [image] load -i fileURI
e.g. :
docker load -i redis_promax.tar
(2)导出镜像
命令 :docker [image] save -o outputFilePath repository:tag
e.g.
docker save -o hehehe.tar hello-world:promax
11.上传镜像
命令:docker [image] push repository[ :tag] registry_host[ :registry_port]/name:tag
或者:先 docker tag repository:tag name:tag,再 docker push name:tag
说明:默认推送镜像至Docker官方仓库,执行上述命令之前,请先登录或注册DockerHub
docker push hello-world:promax hw-pro:promax