3.Docker镜像
1 Docker 镜像常用命令
镜像搜索:docker image search
镜像查看:docker image ls 或 docker images
镜像下载:docker image pull
镜像删除:docker image rm 或 docker rmi
镜像保存:docker image save
镜像加载:docker image load
镜像重命名:docker image tag
镜像详细信息:docker image inspect
镜像历史信息:docker image history

2 镜像简介
镜像是一个 Docker 的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。
通过镜像可以创建一个或多个容器
3 镜像搜索 -docker image search
-
作用:
搜索 Docker Hub(镜像仓库)上的镜像 -
命令格式:
docker search [OPTIONS] TERM -
命令参数:
参数 默认值 描述 -f, --filter filter根据提供的格式筛选结果 --format string利用 Go 语言的 format 格式化输出结果 --limit int展示最大的结果数,默认 25 个 --no-trunc内容全部展示
3.1 按名称搜索图像
搜索名称包含 centos 的镜像

| 参数 | 说明 |
|---|---|
| NAME | 镜像名称 |
| DESCRIPTION | 镜像说明 |
| STARS | 点赞数量 |
| OFFICIAL | 是否是官方认证的 |
3.2 根据提供的格式筛选结果
过滤标志(-f 或 --filter)格式为一 key=value 对。如果有多个过滤器,则传递多个标志(例如 --filter is-official=true --filter stars=3)。
目前支持的过滤器有:
- stars (int - 镜像的点赞数)
- is-official (boolean - true 或 false) - 是不是官方镜像
显示名称包含 centos 并且是官方的镜像

显示名称包含 centos 并且点赞数超过 20 个的镜像

3.3 限制搜索结果
显示 5 条名称包含 centos 的镜像

3.4 显示未截断的描述(--no-trunc)
显示名称包含 centos 并且描述在输出中不被截断的镜像·

3.5 格式化输出(--format)
格式化选项(--format)使用 Go 模板漂亮地打印搜索输出。
Go 模板的有效占位符是:
| 占位符 | 描述 |
|---|---|
.Name |
镜像的名称 |
.Description |
镜像的描述 |
.StarCount |
镜像的点赞数 |
.IsOfficial |
如果镜像是官方的,则为“OK” |
使用 --format 选项时,search 命令将完全按照模板声明的方式输出数据。如果使用该 table 指令,则还会包含列标题。
使用没有标题的模板并以 镜像名:镜像的点赞数 格式输出

带标题的输出

4 镜像查看 -docker image ls / docker images
-
作用:
列出本地镜像 -
命令格式:
docker images [OPTIONS] [REPOSITORY[:TAG]] 或 docker image ls [OPTIONS] [REPOSITORY[:TAG]] -
命令参数:
参数 默认值 描述 -a, --all展示所有镜像(默认隐藏底层的镜像) --no-trunc不缩略显示 -q, --quiet只显示镜像 ID
4.1 列出本地镜像

列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。
镜像 ID 是镜像的唯一标识,一个镜像可以对应多个标签。因此,在上面的例子中,我们可以看到 centos:latest 和 centos:8 拥有相同的 ID,因为它们对应的是同一个镜像。
4.2 按名称和标签列出图像
docker images 命令采用可选 [REPOSITORY[:TAG]] 参数,将列表限制为与参数匹配的镜像。如果指定了 REPOSITORY 但没有指定 TAG ,则 docker images 命令会列出给定存储库中的所有 REPOSITORY 镜像。
例如,列出所有 centos 镜像

例如,列出所有 centos:8 镜像

4.3 列出完整长度的图像 ID (--no-trunc)

4.4 只列出镜像的 ID

5 镜像下载 -docker image pull
-
作用:
下载远程仓库中的镜像 -
命令格式:
docker pull [OPTIONS] NAME[:TAG|@DIGEST] -
命令参数:
参数 默认值 描述 -a, --all-tags下载所有符合给定 tag 的镜像
5.1 从远程仓库拉取镜像
要下载特定镜像或镜像集(即存储库),可使用 docker image pull (或 docker pull 简写)。如果未提供标签,Docker Engine 将默认使用 :latest 标签。
例如拉取 centos:latest 镜像:

镜像可以重用层。例如, centos:8 (目前 centos8 为最新版本)镜像与 centos:latest 共享其层。因此,拉取 centos:8 镜像只会拉取其元数据,而不会拉取其层,因为该层已存在于本地:
拉取 centos:8 镜像

镜像 ID 是涵盖镜像配置和层的 SHA256 摘要。在上面的示例中, centos:8 和 centos:latest 具有相同的镜像 ID,因为它们是带有不同名称标记的同一镜像。由于它们是同一镜像,因此它们的层仅存储一次,不会占用额外的磁盘空间。
6 镜像删除 -docker image rm / docker rmi
-
作用:
将本地的一个或多个镜像删除 -
命令格式:
docker image rm [OPTIONS] IMAGE [IMAGE...] -
命令参数:
参数 默认值 描述 -f, --force强制删除
6.1 使用 ID、镜像名删除镜像
我们可以用镜像的完整 ID,也称为 长 ID,来删除镜像。使用脚本的时候可能会用长 ID,但是人工输入就太累了,所以更多的时候是用 短 ID 来删除镜像。 docker image ls 默认列出的就已经是短 ID 了,一般取前 3 个字符以上,只要足够区分于别的镜像就可以了。
使用 ID 删除镜像

我们也可以用 镜像名 ,也就是 <仓库名>:<标签> ,不写标签默认为 :latest 来删除镜像。


删除多个镜像

6.2 Untagged 和 Deleted
如果观察上面这几个命令的运行输出信息的话,会注意到删除行为分为两类,一类是 Untagged ,另一类是 Deleted 。之前介绍过,镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。
因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker image rm 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。
当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变得非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的原因。
除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。
6.3 强制删除镜像
删除失败,因为该 ID 有多个引用,使用 -f 可以强制删除所有该 ID 的引用

在镜像被容器引用时,也无法删除,只有 -f 才能强制删除
7 镜像保存备份 -docker image save
-
作用:
将本地的一个或多个镜像打包保存成本地 tar 文件(输出到 STDOUT) -
命令格式:
docker image save [OPTIONS] IMAGE [IMAGE...] -
命令参数:
参数 默认值 描述 -o, --output写入文件,而不是 STDOUT
7.1 保存镜像
默认是输出到 STDOUT 的

输出到文件

8 镜像备份导入 -docker image load
-
作用:
将 save 命令打包的镜像导入本地镜像库中 -
命令格式:
docker image load [OPTIONS] -
命令参数:
参数 默认值 描述 -i, --input从 tar 存档文件读取,而不是从 STDIN 读取 -q, --quiet不打印导入过程信息
8.1 导入镜像
默认是从 STDIN 中读取文件,使用 -i 来指定文件

9 为镜像添加引用 -docker image tag
-
作用:
对本地镜像的 NAME、TAG 进行重命名,并产生一个命名后的镜像 -
命令格式:
docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] -
命令参数:
无
9.1 通过 ID 为镜像添加 tag 引用
docker image tag 命令并不会覆盖原镜像引用,而是生成一个新的引用

9.2 通过名称为镜像添加 tag 引用

10 镜像详细信息 -docker image inspect
-
作用:
显示一个或多个图像的详细信息 -
命令格式:
docker image inspect [OPTIONS] IMAGE [IMAGE...] -
命令参数:
参数 默认值 描述 -f, --format利用 go 语言的 format 格式输出结果
10.1 查看镜像信息
PS D:\data\test> docker image inspect ubuntu
[
{
"Id": "sha256:b1d9df8ab81559494794e522b380878cf9ba82d4c1fb67293bcf931c3aa69ae4",
"RepoTags": [
"ubuntu:latest",
"ubuntu:new"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2024-11-19T17:29:25.973758549Z",
"DockerVersion": "24.0.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "sha256:3ba7f9a61d88dd09bb6ac9166cec39891772edc997c4c1da55e50a27f2647e48",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "24.04"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 78120830,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/merged",
"UpperDir": "/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/diff",
"WorkDir": "/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:687d50f2f6a697da02e05f2b2b9cb05c1d551f37c404ebe55fdec44b0ae8aa5c"
]
},
"Metadata": {
"LastTagTime": "2024-12-06T08:05:07.544242437Z"
}
}
]
PS D:\data\test>
10.2 格式化查看
json 格式查看
PS D:\data\test> docker image inspect ubuntu
[
{
"Id": "sha256:b1d9df8ab81559494794e522b380878cf9ba82d4c1fb67293bcf931c3aa69ae4",
"RepoTags": [
"ubuntu:latest",
"ubuntu:new"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2024-11-19T17:29:25.973758549Z",
"DockerVersion": "24.0.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "sha256:3ba7f9a61d88dd09bb6ac9166cec39891772edc997c4c1da55e50a27f2647e48",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "24.04"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 78120830,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/merged",
"UpperDir": "/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/diff",
"WorkDir": "/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:687d50f2f6a697da02e05f2b2b9cb05c1d551f37c404ebe55fdec44b0ae8aa5c"
]
},
"Metadata": {
"LastTagTime": "2024-12-06T08:05:07.544242437Z"
}
}
]
PS D:\data\test> docker image inspect -f "{{json .Id}}" ubuntu
"sha256:b1d9df8ab81559494794e522b380878cf9ba82d4c1fb67293bcf931c3aa69ae4"
PS D:\data\test> docker image inspect -f "{{json .GraphDriver.Data}}" ubuntu
{"MergedDir":"/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/merged","UpperDir":"/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/diff","WorkDir":"/var/lib/docker/overlay2/ade9f0a2bb175f0af58350a634a35b2392ede90b6cf57b74715608e8d6e8414d/work"}
PS D:\data\test>
11 镜像历史信息 - docker image history
-
作用:
查看本地一个镜像的历史(历史分层)信息 -
命令格式:
docker image history [OPTIONS] IMAGE -
命令参数:
参数 默认值 描述 -H, --humantrue 以人类可读的格式打印尺寸和日期 -q, --quiet仅显示镜像 ID --no-trunc不要截断输出
11.1 查看历史信息


浙公网安备 33010602011771号