Docker镜像(image)详解

Docker镜像(image)详解

1、Docker镜像(image)是什么

Docker镜像是一种轻量级、可执行的独立软件包,也可以说是一个精简的操作系统。镜像中包含运行环境和应用软件。可以理解为停止运行的虚拟机,但是比虚拟机占用资源更小。如果是开发人员,则可以理解为面相对象中的class,有了class则可以创建出很多的对象,而对象就可以比拟为容器。镜像运行后就是容器。

镜像是静态的,容器则是动态的。镜像制作后存储的地方就是镜像仓库(Image Registry)。就像java中的maven、gradle;linux中的yum一样,镜像也是有仓库的。

2、镜像仓库分类

镜像中心中存储着大量的镜像仓库Image Repository,每个镜像仓库中包含着大量相关镜像。根据这些镜像发布者的不同,形成了四类不同的镜像仓库。

  • Docker Official Image

Docker 官方镜像仓库。该类仓库中的镜像由 Docker 官方构建发布,代码质量较高且安全,有较完善的文档。该类仓库中的镜像会及时更新。一般常用的系统、工具软件、中间件 都有相应的官方镜像仓库。例如,Zookeeper、Redis、Nginx 等。
官方镜像仓库的名称<repository>一般直接为该类软件的名称<software-name>。

  • image

    Verified Publisher

已验证发布者仓库。该类仓库中的镜像由第三方发布。但该第三方是由Docker公司审核认证过的,一般为大型企业、团体或组织。审核通过后,Docker 公司会 向其颁发“VERIFIED PUBLISHER”标识。这种仓库中镜像的质量还有有保证的。

除了官方镜像仓库,其它都是非官方镜像仓库。非官方镜像仓库名称<repository>一般 由发布者用户名与软件名称两部分构成,形式为:<username>/<software-name>。

  • image

    Sponsored OSS

由 Docker 公司赞助开发的镜像仓库。该类仓库中的镜像也由非 Docker 官方的第三方发 布,但该镜像的开发是由 Docker 公司赞助的。该类型的第三方一般为个人、团队或组织。 这种仓库中镜像的质量也是有保证的。

  • 无认证仓库

没有以上任何标识的仓库。这种仓库中镜像的质量良莠不齐,质量上无法保证,在使用时需谨慎。

3、第三方镜像中心

镜像中心默认使用的都是 Docker 官方的 Docker Hub。不过,镜像中心是可配置的,可以使用指定的第三方镜像中心。对于第三方镜像中心中的仓库名称<repository>由三部分构 成:<domain-name>/<username>/<software-name>。其中的< domain-name >指的是第三方镜 像中心的域名或者IP。

4、镜像定位

对于任何镜像,都可通过<repository>:<tag>进行唯一定位。其中<tag>一般称为镜像的版本号。<tag>中有一个比较特殊的版本——latest。如果不指定,默认<tag>即为latest。一般其存放的是最新版,但并不能保证其真的就是最新版。

5、镜像相关命令

5.1、docker pull

①、基本用法

通过 docker pull 命令可以将指定的镜像从 docker hub 拉取到本地。如果没有指定镜像则会抛出一个 Error。如下为拉取nginx1.24.0版本的镜像

语法:docker pull 镜像名:镜像版本     

如果不指定镜像版本,则为拉取最新版本,即为 :latest版本

image

②、简化拉取日志

docker pull -q nginx:1.24.0

image

③、通过digest 拉取

docker pull 可通过镜像的digest进行拉取。语法格式为 docker pull <repository>@<digest>。digest,是镜像内容的一个Hash值,即所谓的ContentHash(内容散列)。只要镜像内容发生了变更,其内容散列值就一定会发生改变。注意,digest是包含前面的sha256的,表示该digest的产生所采用的Hash算法是SHA256。

image

image

5.2、docker images

①、基础用法

通过 docker images 命令可查看本地已下载的所有镜像资源信息。这些镜像会按照镜像被创建的时间正序排序。

注意:这里的创建时间不是我们拉取的时间,而是上传至镜像中心的时间

image

  • REPOSITORY:镜像仓库名称
  • TAG:镜像版本号
  • IMAGE ID:镜像的唯一标识
  • CREATE:镜像的创建时间
  • SIZE:镜像大小

②、查看指定镜像

docker images 可以查看指定镜像的信息。

image

③、查询镜像完整ID

默认的 docker images 显示的镜像 id 是经过截取后的显示结果,仅显示了前 12 位。使
用 –no-trunc 参数后显示的是完成的镜像 id。

image

④、查看镜像digest

–digests 选项可以查看所有镜像或指定镜像的 digest 信息

image

⑤、仅显示镜像ID

-q 选项可仅显示本地所有镜像的 ImageID。该主要是将来与其它命令联合使用。

image

⑥、过滤镜像

-f 选项用于过滤指定条件的镜像。下面例举一些常用的过滤条件。例如,

image

dangling=true 用于过滤出悬虚镜像,即没有 Repository 与 Tag 的镜像。对于悬虚镜像的 REPOSITORY 与 TAG,显示的是<none>。

image

-f before 用于列举出本地镜像中指定镜像创建时间之前创建的所有镜像。

image

-f since 用于列举出本地镜像中指定镜像创建时间之后的创建的所有镜像。

image

-f reference 用于列举出<repository>:<tag>与指定表达式相匹配的所有镜像。

⑦、格式化显示

该选项用于格式化输出 docker images 的内容,格式需要使用 GO 模板指定。例如,

image

5.3、docker search

①、基础语法

通过 docker search 命令可以从 docker hub 上查看指定名称的镜像。

image

AUTOMATED 表示当前镜像是否是“自动化镜像”。什么是自动化镜像?就是使用 Docker Hub 连接一个包含 Dockerfile 文件(专门构建镜像用的文件)的 GitHub 仓库或 Bitbucket 仓库的 源码托管平台,然后 Docker Hub 就会自动根据 Dockerfile 内容构建镜像。这种构建出的镜像 会被标记为 AUTOMATED,这种构建镜像的方式称为 Trusted Build(受信构建)。只要 Dockerfile 文件内容发生变化,那么 Docker Hub 就会构建出新的镜像。

②、过滤检索结果

用于过滤查询结果。例如,下面的是仅查询出官方提供的镜像。

image

③、限制检索数量

默认 docker search 显示 25 条检索结果,可通过–limit 选项来指定显示的结果数量。

image

5.4、docker rmi

①、基本用法

该命令用于删除指定的本地镜像。镜像通过<repository>:<tag>指定。如果省略要删除镜像的tag,默认删除的是lastest版本。

image

②、删除多个镜像

docker rmi 命令可一次性删除多个镜像,多个要删除的镜像间使用空格分隔。

image

③、通过ImageID删除

docker rmi 也可通过 ImageID 指定要删除的镜像。

image

④、强制删除镜像

默认情况下,对于已经运行了容器的镜像是不能删除的,必须要先停止并删除了相关容器然后才能删除其对应的镜像。不过,也可以通过添加-f 选项进行强制删除。

image

⑤、删除所有镜像

使用组合命令删除所有镜像。当然,如果不携带-f 选项,则不会删除已打开容器的镜像。

image

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    qzxdp.cn

    暂无评论内容