如何使用 docker container inspect 命令查看容器详情

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何使用 docker inspect 命令查看 Docker 容器的详细信息。你将探索如何检查运行中和已停止的容器,理解默认的 JSON 输出格式,并发现如何通过 Go 模板格式化输出来实现自定义视图。此外,你还将学习如何使用 docker inspect 命令显示容器的大小信息。

通过动手实践,你将获得使用 docker inspect 获取宝贵配置、状态和网络细节的实际经验,这对于故障排除和管理 Docker 环境至关重要。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/run -.-> lab-555110{{"如何使用 docker container inspect 命令查看容器详情"}} docker/ps -.-> lab-555110{{"如何使用 docker container inspect 命令查看容器详情"}} docker/stop -.-> lab-555110{{"如何使用 docker container inspect 命令查看容器详情"}} docker/rm -.-> lab-555110{{"如何使用 docker container inspect 命令查看容器详情"}} docker/inspect -.-> lab-555110{{"如何使用 docker container inspect 命令查看容器详情"}} end

检查运行中的容器

在这一步中,你将学习如何检查一个运行中的 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 的所有详细信息。你可以滚动查看输出的各个部分,例如 IdStateConfigNetworkSettings 等。

为了使输出更易读或提取特定信息,你可以通过管道将输出传递给 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

输出将是一个包含 container1container2 检查详情的 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。该列显示两个值:

  1. 容器可写层的大小(自容器创建以来对其文件系统所做的更改)
  2. 容器的总大小,包括镜像层大小加上可写层大小

对于不写入太多数据的简单容器,可写层的大小通常很小。总大小会更大,因为它包含基础镜像的大小。

你也可以在列出所有容器(包括已停止的容器)时查看大小信息:

docker ps -a --size

这对于查看已退出但尚未移除的容器大小很有用。

理解容器大小对于管理 Docker 主机上的磁盘空间很重要。

最后,停止并移除容器:

docker stop my-size-container
docker rm my-size-container

总结

在本实验中,你学习了如何使用 docker inspect 命令查看 Docker 容器的详细信息。通过实践,你掌握了如何检查运行中和已停止的容器,了解到该命令无论容器处于何种状态都能提供全面的数据。

此外,你还探索了如何格式化 docker inspect 的输出,特别是以 JSON 格式输出完整详情,以及使用 Go 模板提取和显示特定信息。最后,你学会了如何使用 --size 标志在检查输出中包含容器大小信息。