简介
在本实验中,你将学习如何使用 docker inspect
命令查看 Docker 容器的详细信息。你将探索如何检查运行中和已停止的容器,理解默认的 JSON 输出格式,并发现如何通过 Go 模板格式化输出来实现自定义视图。此外,你还将学习如何使用 docker inspect
命令显示容器的大小信息。
通过动手实践,你将获得使用 docker inspect
获取宝贵配置、状态和网络细节的实际经验,这对于故障排除和管理 Docker 环境至关重要。
在本实验中,你将学习如何使用 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
在这一步中,你将学习如何将 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 模板来格式化 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
标志在检查输出中包含容器大小信息。