介绍
在本实验中,你将学习如何使用 docker inspect 命令查看 Docker 容器的详细信息。你将探索如何检查运行中和已停止的容器,理解默认的 JSON 输出格式,并发现如何通过 Go 模板格式化输出来实现自定义视图。此外,你还将学习如何使用 docker inspect 命令显示容器的大小信息。
通过动手实践,你将获得使用 docker inspect 获取宝贵配置、状态和网络细节的实际经验,这对于故障排除和管理 Docker 环境至关重要。
检查运行中的容器
在这一步中,你将学习如何检查一个运行中的 Docker 容器。docker inspect 命令提供了关于容器的详细信息,包括其配置、网络设置和状态。
首先,让我们运行一个保持运行状态的简单容器。我们将使用 ubuntu 镜像,并执行一个让容器持续运行的命令。
docker run -d --name my-running-container ubuntu sleep infinity
在上面的命令中:
docker run:该命令用于运行一个新容器。-d:该标志让容器在后台运行(detached 模式)。--name my-running-container:为容器指定一个名称,便于后续引用。ubuntu:这是我们使用的镜像。如果本地没有该镜像,Docker 会自动拉取。sleep infinity:在容器内执行的命令,使容器无限期保持运行状态。
现在容器已经运行起来了,我们可以检查它。使用 docker inspect 命令后跟容器名称:
docker inspect my-running-container
该命令会输出一个大型 JSON 对象,包含关于 my-running-container 的所有详细信息。你可以滚动查看输出的各个部分,例如 Id、State、Config、NetworkSettings 等。
为了使输出更易读或提取特定信息,你可以通过管道将输出传递给 jq(一个轻量级且灵活的命令行 JSON 处理器)等工具。但在本实验中,我们将专注于基础的 docker inspect 命令。
检查完容器后,你可以停止并删除它以清理环境:
docker stop my-running-container
docker rm my-running-container
docker stop my-running-container:该命令停止正在运行的容器。docker rm my-running-container:该命令移除已停止的容器。
检查已停止的容器
在这一步中,你将学习如何检查当前未运行的容器。docker inspect 命令对运行中和已停止的容器都有效,可以获取它们的配置和最终状态信息。
首先,让我们运行一个会在短时间内退出的简单容器:
docker run --name my-stopped-container ubuntu sleep 5
在这个命令中:
docker run:运行一个新容器--name my-stopped-container:为容器指定名称ubuntu:使用的镜像sleep 5:在容器内执行的命令,5 秒后容器将退出
等待几秒钟让容器执行完 sleep 5 命令并停止。你可以使用 docker ps -a 列出所有容器(包括已停止的)来验证容器状态:
docker ps -a
你应该能在列表中看到 my-stopped-container,其状态显示为已退出。
现在,你可以像上一步检查运行中容器那样,使用 docker inspect 命令检查已停止的容器:
docker inspect my-stopped-container
你将再次看到详细的 JSON 输出。注意 State 部分会显示容器的退出状态和完成时间等信息。
检查已停止的容器对于调试或理解容器退出的原因非常有用。
最后,清理已停止的容器:
docker rm my-stopped-container
以 JSON 格式输出检查结果
在这一步中,你将学习如何将 docker inspect 命令的输出格式化为 JSON 数组。这在同时检查多个对象(如容器或镜像)时特别有用,因为它提供了结构化的输出,便于其他工具或脚本解析。
首先,让我们运行两个保持运行状态的简单容器:
docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity
现在,我们同时检查这两个容器并将输出格式化为 JSON 数组。可以通过向 docker inspect 命令提供多个容器名称来实现:
docker inspect container1 container2
输出将是一个包含 container1 和 container2 检查详情的 JSON 数组。数组中的每个元素对应一个容器的 JSON 对象。
这种格式是检查多个对象时的默认输出方式,是表示结构化数据列表的标准方法。
检查完成后,停止并移除这两个容器:
docker stop container1 container2
docker rm container1 container2
使用 Go 模板格式化检查输出
在这一步中,你将学习如何使用 Go 模板来格式化 docker inspect 命令的输出。这使你可以从详细的 JSON 输出中提取特定信息,并以自定义格式显示。
首先,让我们运行一个保持运行状态的容器:
docker run -d --name my-templated-container ubuntu sleep infinity
现在,我们来检查这个容器并使用 Go 模板仅显示其 IP 地址。IP 地址位于检查输出的 NetworkSettings.IPAddress 字段中:
docker inspect --format '{{.NetworkSettings.IPAddress}}' my-templated-container
在这个命令中:
--format '{{.NetworkSettings.IPAddress}}':这个标志使用 Go 模板指定格式{{...}}:这些双花括号表示 Go 模板中的动作.:表示被检查的根对象(容器)NetworkSettings:访问根对象中的NetworkSettings字段IPAddress:访问NetworkSettings对象中的IPAddress字段
该命令的输出将仅显示容器的 IP 地址。
你可以使用 Go 模板提取各种信息。例如,获取容器的名称和 ID:
docker inspect --format 'Name: {{.Name}}, ID: {{.Id}}' my-templated-container
这将输出类似 Name: /my-templated-container, ID: <container_id> 的内容。
Go 模板提供了强大的格式化功能,包括条件语句、循环和函数。不过在这个基础示例中,我们只是访问字段。
检查完成后,停止并移除容器:
docker stop my-templated-container
docker rm my-templated-container
显示容器大小信息
在这一步中,你将学习如何显示 Docker 容器的大小信息。这对于监控磁盘使用情况和了解容器的占用空间很有帮助。
默认情况下,docker ps 命令不会显示容器的大小。要包含大小信息,可以使用 --size 或 -s 标志。
首先,让我们运行一个简单的容器:
docker run -d --name my-size-container ubuntu sleep infinity
现在,列出正在运行的容器并包含大小信息:
docker ps --size
或者
docker ps -s
在输出中,你将看到一个额外的列 SIZE。该列显示两个值:
- 容器可写层的大小(自容器创建以来对其文件系统所做的更改)
- 容器的总大小,包括镜像层大小加上可写层大小
对于不写入太多数据的简单容器,可写层的大小通常很小。总大小会更大,因为它包含基础镜像的大小。
你也可以在列出所有容器(包括已停止的容器)时查看大小信息:
docker ps -a --size
这对于查看已退出但尚未移除的容器大小很有用。
理解容器大小对于管理 Docker 主机上的磁盘空间很重要。
最后,停止并移除容器:
docker stop my-size-container
docker rm my-size-container
总结
在本实验中,你学习了如何使用 docker inspect 命令查看 Docker 容器的详细信息。通过实践,你掌握了如何检查运行中和已停止的容器,了解到该命令无论容器处于何种状态都能提供全面的数据。
此外,你还探索了如何格式化 docker inspect 的输出,特别是以 JSON 格式输出完整详情,以及使用 Go 模板提取和显示特定信息。最后,你学会了如何使用 --size 标志在检查输出中包含容器大小信息。



