docker 删除image_docker入门教程(二)

Docker

上一篇主要记录关于容器技术解决的根本性问题,docker的基本构成、工作流程、安装和基本配置。这一篇将正式进入docker技术篇。Docker应用的三大组件儿仓库(repository)用于存储、镜像(image)用于构建容器、容器(container)用于承载服务以及应用。

镜像

镜像和容器

容器即运行时的镜像。镜像好比代码中的class,而容器就相当于instance类的实例对象。

镜像好比系统的抽象,容器相当于应用。

镜像分层有layer的概念,l容器没有。容器之间完全隔离,哪怕使用同一个镜像构建多个容器,它们之间也是隔离的。

f7b4d4659bc3bb3cc5787a33df53be88.gif

镜像的分层

镜像的构成,由一个或多个镜像层构成,每一层称为一个Layer,由下至上堆叠而成,最底层是基础镜像。比如一个Java容器化应用,它的构成最底层是系统CentOS或Ubuntu镜像,往上一层是Java环境JDK镜像,顶层是Java应用,最终构建出Java应用镜像。

镜像的覆盖,当一个镜像多个Layer之间使用同一个镜像层时,上层会覆盖下层。

镜像层共享,拉取镜像,当上层的镜像层已经存在,不会重复拉取远程镜像直接复用。

f7b4d4659bc3bb3cc5787a33df53be88.gif
镜像命名规范

命名规范:${registry-host}/${namespace}/${image-name}:${tag}

registry-host:默认值docker.io使用Dockerhub存储,支持隐式声明。使用阿里云镜像仓库服务,需要显式声明阿里云镜像仓库服务的host,如registry.cn-hangzhou.aliyuncs.com/angel/tomcat:1.0

namespace:命名空间,也就是告诉镜像仓库服务要存储到什么地方

image-name:镜像名称,自定义镜像名称

tag:镜像标签,默认值为latest,支持自定义镜像标签

f7b4d4659bc3bb3cc5787a33df53be88.gif
镜像添加标签

指令语法:docker image tag ${current-image-tag}${new-image-tag}

示例:

docker image tag tomcat:7registry.cn-hangzhou.aliyuncs.com/angel/tomcat:1.0

f7b4d4659bc3bb3cc5787a33df53be88.gif
镜像搜索

指令语法:docker search ${image-name}

示例:

docker search nginx

过滤搜索:

docker search nginx--filter"is-offical=true" # 过滤docker官方镜像

docker search nginx--filter"is-automated=true"# 过滤自动构建的镜像

docker search nginx--filter"stars=100"# 过滤星数大于等于100的镜像

限制输出数量:

docker search nginx--limit 10 # 输出前10条搜索记录

组合使用:

docker search nginx--filter"stars=100"--limit5 # 过滤星数大于等于100,展示前5条

f7b4d4659bc3bb3cc5787a33df53be88.gif
镜像拉取

指令语法:docker image pull ${image-name}# 默认拉取标签为latest,但实际latest标签并不能表示是最新镜像

示例:

docker image pull openjdk:8

f7b4d4659bc3bb3cc5787a33df53be88.gif
查看宿主机镜像列表

指令语法:docker image ls# 默认展示本地非悬虚镜像,没有使用的镜像为悬虚镜像

示例:

docker image ls

查看本地所有镜像,包含悬虚镜像:

docker image ls-a

查看本地镜像ID

docker image ls-q# 默认输出本地非悬虚镜像ID

docker image ls-qa# 输出本地所有镜像ID

过滤本地镜像

docker image ls-a--filter dangling=true# 过滤本地悬虚镜像

docker image ls-qa--filter dangling=true# 过滤本地悬虚镜像ID,批量删除悬虚镜像时有用

f7b4d4659bc3bb3cc5787a33df53be88.gif
查看宿主机镜像详情

指令语法:docker image inspect ${image-name}:${tag}# 默认输出镜像的全部元数据

终端输入命令

[root@VM_0_4_centos~]#docker image inspect openjdk:8

# 下面这一段信息,描述openjdk:8镜像的所有镜像层,每一个哈希值表示一个Layer

"RootFS":{

       "Type":"layers",

       "Layers":[

           "sha256:8c02234b86056c009036ff0c31efb9a726412392d9872dacf95103767ac3b101",

           "sha256:7cc1c2d7e744369899e8affd52f9be62076b1ef0205f02ed11547bb5327e5a43",

           "sha256:760e8d95cf58e8696de9ba210ef58522750aee7a1f24c15695f493582002c08e",

           "sha256:88cfc2fcd059f99b165d045b00500d40892c5afaa7181a95d9936350320c8f9c",

           "sha256:155d997ed77ca415391df55e0b61fd4552031f1a1e9615c8bcf9531192ba755c",

           "sha256:715d0a3d2cc2b8ae4c24163aa9526f7792fa24dc7a3c2a75e2cc38757c655fe4",

           "sha256:7d0784c2c563ae1f1bb86682d8a67fbda71b1d55e5e857d431c091e9622b171e"

       ]

   }

f7b4d4659bc3bb3cc5787a33df53be88.gif
删除宿主机镜像

指令语法:docker image rm ${image-name}:${tag}# 可以使用镜像tag,也可以使用镜像ID

示例:

docker image rm tomcat:7

强制删除镜像:

docker image rm-f tocmat:7

批量删除悬虚镜像:

docker image rm $(docker image ls-qa--filter dangling=true)

强制删除所有镜像:

docker image rm-f $(docker image ls-qa)

注意点:

当镜像已经构建过容器且状态为Up或者Exited时,使用普通删除无法删除镜像

不推荐使用强制删除镜像,不友好,也无法给镜像留有清理数据的时间

你可能感兴趣的:(docker,删除image,docker,批量删除镜像)