5.1 命令 docker images
如果你的系统里已经存储了 Docker 镜像,可以通过专门的命令对其进行管理。首先是 docker images
和 docker rmi
。在本讲中,我们会详细讨论如何使用这些命令来高效管理 Docker 镜像。
命令 docker images
会显示本地系统中保存的镜像列表。它显示的信息包括仓库名称、标签、镜像ID、创建日期以及大小。这些信息可以快速让你了解可用有哪些镜像,以及它们占用了多少空间。
语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
其中:
-
OPTIONS
: 用于过滤和格式化输出的额外参数。 -
[REPOSITORY[:TAG]]
: (可选)根据仓库名称和/或标签进行过滤。
基本使用示例
以下示例显示本地保存的所有镜像列表。
docker images
命令 docker images
的输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5a7e5b1a3b8c 2 days ago 133MB
ubuntu 20.04 ba6acccedd29 3 weeks ago 72.9MB
myapp 1.0 d1e5e2ff5ff2 1 month ago 89.5MB
各列描述:
- REPOSITORY: 镜像所属的仓库名称。
- TAG: 指示镜像版本的标签。
- IMAGE ID: 镜像的唯一标识符。
- CREATED: 镜像创建以来的时间。
- SIZE: 镜像在内存中的大小。
5.2 镜像过滤
镜像过滤可以缩小 docker images
命令的结果,只显示符合你条件的镜像。如果你的系统里存了很多镜像,而你需要快速找到特定的镜像(按照仓库名、标签或者其他参数),这个非常方便。
1. 按仓库过滤
docker images nginx
这个例子会只显示来自仓库 nginx
的镜像。
2. 按标签过滤
docker images ubuntu:20.04
这个例子会显示带有标签 20.04
的 ubuntu
镜像。
3. 使用参数 -a (all)
默认情况下,docker images
命令只显示镜像的最新版本。如果想显示所有镜像(包括中间层),可以使用选项 -a
。
docker images -a
4. 格式化输出
为了简化阅读,或者与其他工具集成,你可以用 --format
选项自定义输出格式。这在脚本和任务自动化中特别有用。
docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}"
5.3 命令 docker rmi
命令 docker rmi
用于删除一个或多个 Docker 镜像。这对释放磁盘空间和保持系统整洁很有用,特别是当镜像不再被使用时。
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
其中:
- OPTIONS: 用于控制删除过程的附加参数。
- IMAGE: 要删除的镜像的名称、标签或 ID。
基本使用示例
这个例子删除名称为 nginx
的镜像。
docker rmi nginx
通过镜像 ID 删除
这个例子删除 ID 为 5a7e5b1a3b8c
的镜像。
docker rmi 5a7e5b1a3b8c
强制删除
如果镜像被容器使用或被锁定,可能无法正常删除。要强制删除,请使用选项 -f (force)
。
docker rmi -f myapp:1.0
删除多个镜像
要一次删除多个镜像,请用空格分隔它们。
docker rmi nginx ubuntu:20.04 myapp:1.0
5.4 实践示例
示例 1: 查看所有镜像
要获取本地机器上存储的所有镜像的完整列表,请执行以下命令:
docker images
此命令将显示一个包含仓库名称、标签、镜像ID、创建日期和大小的表格。
示例 2: 格式化输出查看镜像
如果想以自定义格式获取镜像列表,比如只输出仓库名和标签:
docker images --format "{{.Repository}}:{{.Tag}}"
这个示例展示了如何使用选项 --format
设置输出,这在编写脚本时非常方便。
示例 3: 删除所有未使用的镜像
如果想删除所有未被容器使用的镜像,首先获取它们的列表,然后执行删除:
docker images -q
docker rmi $(docker images -q)
命令 docker images -q
只输出本地保存的所有镜像ID,然后将其传递给 docker rmi
进行删除。
示例 4: 删除悬空镜像 (dangling images)
悬空镜像
是指没有标签的镜像,通常在镜像更新或构建失败后产生。要删除它们,可以使用以下命令:
docker rmi $(docker images -f "dangling=true" -q)
这里 -f "dangling=true"
过滤掉没有标签的镜像,而 -q
仅输出它们的ID,然后传递给删除命令。
GO TO FULL VERSION