跳到主要内容

显示容器的配置信息

SYNOPSIS

podman container inspect [options] container [container ...]

DESCRIPTION

此命令用于显示通过名称或ID标识的容器的底层信息。默认情况下,这些信息将以JSON数组的形式呈现。如果指定了格式,则会对每个结果执行相应的模板。

OPTIONS

# --format, -f=format

使用给定的Go模板格式化输出。 返回的JSON中的键可以作为--format标志的值(见以下示例)。

示例

1. 获取单个容器的所有信息

$ podman container inspect mycontainer
```bash

这将返回`mycontainer`容器的详细配置信息,以JSON格式输出。

### 2. 使用模板格式化输出

```bashbash
$ podman container inspect --format '{{.Id}} {{.Name}}' mycontainer
```bash

此命令将只显示`mycontainer`容器的ID和名称,并以空格分隔输出。

### 3. 获取多个容器的信息

```bashbash
$ podman container inspect container1 container2
```bash

这将返回`container1`和`container2`两个容器的配置信息,每个容器的信息都会以JSON格式输出。

### 4. 使用模板格式化多个容器的输出

```bashbash
$ podman container inspect --format '{{.Id}} {{.Name}}' container1 container2
```bash

此命令将分别显示`container1`和`container2`的ID和名称,每个容器的信息都会以空格分隔输出。

## 注意事项

- 在使用`--format`选项时,确保模板字符串中的键与返回的JSON中的键匹配。
- 如果模板格式不正确或指定的键不存在于返回的JSON中,命令可能会返回错误或无法按预期工作。

## 参见

- **[podman(1)](podman.1)**: Podman主命令文档。
- **[podman-container(1)](podman-container.1)**: Podman容器子命令文档。

## 历史

此命令是Podman工具集的一部分,随着Podman的版本更新而不断发展和改进。如需查看具体的历史变更,请查阅Podman的官方文档或变更日志。

以下是Go模板中有效的占位符列表:

| **占位符** | **描述** |
| ---------------------- | ------------------------------------------------------------------ |
| .AppArmorProfile | AppArmor配置文件(字符串) |
| .Args | 命令行参数(字符串数组) |
| .BoundingCaps | 限定能力集(字符串数组) |
| .Config ... | 包含配置信息的结构 |
| .ConmonPidFile | 包含conmon进程ID的文件路径(字符串) |
| .Created ... | 容器创建时间(ISO3601格式的字符串) |
| .Dependencies | 依赖项(字符串数组) |
| .Driver | 存储驱动(字符串) |
| .EffectiveCaps | 有效能力集(字符串数组) |
| .ExecIDs | 执行ID(字符串数组) |
| .GraphDriver ... | 图驱动器的更多详细信息(结构体) |
| .HostConfig ... | 主机配置详细信息(结构体) |
| .HostnamePath | 包含主机名的文件路径(字符串) |
| .HostsPath | 容器内的/etc/hosts文件路径(字符串) |
| .ID | 容器ID(完整的64字符哈希) |
| .Image | 容器镜像ID(64字符哈希) |
| .ImageDigest | 容器镜像摘要(sha256: + 64字符哈希) |
| .ImageName | 容器镜像名称(字符串) |
| .IsInfra | 这是否是基础设施容器?(字符串:true/false) |
| .IsService | 这是否是服务容器?(字符串:true/false) |
| .KubeExitCodePropagation | Kube退出代码传播(字符串) |
| .LockNumber | 容器Libpod锁的编号 |
| .MountLabel | 挂载的SELinux标签(字符串) |
| .Mounts | 挂载(字符串数组) |
| .Name | 容器名称(字符串) |
| .Namespace | 容器命名空间(字符串) |
| .NetworkSettings ... | 网络设置(结构体) |
| .OCIConfigPath | OCI配置文件路径(字符串) |
| .OCIRuntime | OCI运行时名称(字符串) |
| .Path | 容器命令的路径(字符串) |
| .PidFile | 包含容器PID的文件路径(字符串) |
| .Pod | 父Pod(字符串) |
| .ProcessLabel | 进程的SELinux标签(字符串) |
| .ResolvConfPath | 容器resolv.conf文件的路径(字符串) |
| .RestartCount | 容器已重启的次数(整数) |
| .Rootfs | 容器rootfs(字符串) |
| .SizeRootFs | rootfs的大小(字节)[1] |
| .SizeRw | 上层(R/W)容器层的大小(字节)[1] |
| .State ... | 容器状态信息(结构体) |
| .StaticDir | 容器元数据目录的路径(字符串) |


使用这些占位符,你可以在`podman container inspect`命令的`--format`选项中构造自定义的输出格式,以提取所需的具体信息。例如,如果你想只显示容器的ID和镜像名称,你可以这样使用:

```bash
podman container inspect --format '{{.ID}} {{.ImageName}}' container_name_or_id

这将返回类似以下的输出:

f30ec84d9e5446c320123456789abcdef0123456789abcdef 0123456789abcdef0123456789abcdef0123456789abcdef

这里的container_name_or_id应替换为你要检查的容器的名称或ID。 下面是上述内容的中文翻译,其中还包括了一个如何使用这些占位符和选项的例子。

[1] 这个格式说明符需要--size选项

选项说明(latest)

--size, -s

除了正常的输出外,如果类型是容器,则显示总文件大小。

例子

检查指定的容器并以json格式打印其信息:

podman container inspect --format '{{json .}}' --size container_name_or_id

这里的container_name_or_id应替换为你要检查的容器的名称或ID。这个命令将返回容器的详细信息,包括其大小(如果使用了--size选项)。输出将是JSON格式的,这样你可以更容易地解析和处理它。如果你只想获取特定字段的信息,你可以调整--format选项中的占位符。

$ podman container inspect foobar
[
{
"Id": "99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6",
"Created": "2021-09-16T06:09:08.936623325-04:00",
"Path": "echo",
"Args": [
"hi"
],
"State": {
"OciVersion": "1.0.2-dev",
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-09-16T06:09:09.033564436-04:00",
"FinishedAt": "2021-09-16T06:09:09.036184314-04:00",
"Healthcheck": {
"Status": "",
"FailingStreak": 0,
"Log": null
}
},
"Image": "14119a10abf4669e8cdbdff324a9f9605d99697215a0d21c360fe8dfa8471bab",
"ImageName": "docker.io/library/alpine:latest",
"Rootfs": "",
"Pod": "",
"ResolvConfPath": "/run/user/3267/containers/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata/resolv.conf",
"HostnamePath": "/run/user/3267/containers/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata/hostname",
"HostsPath": "/run/user/3267/containers/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata/hosts",
"StaticDir": "/home/dwalsh/.local/share/containers/storage/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata",
"OCIConfigPath": "/home/dwalsh/.local/share/containers/storage/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata/config.json",
"OCIRuntime": "crun",
"ConmonPidFile": "/run/user/3267/containers/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata/conmon.pid",
"PidFile": "/run/user/3267/containers/overlay-containers/99f66530fe9c7249f7cf29f78e8661669d5831cbe4ee80ea757d5e922dd6a8a6/userdata/pidfile",
"Name": "foobar",
"RestartCount": 0,
"Driver": "overlay",
"MountLabel": "system_u:object_r:container_file_t:s0:c25,c695",
"ProcessLabel": "system_u:system_r:container_t:s0:c25,c695",
"AppArmorProfile": "",
"EffectiveCaps": [
"CAP_CHOWN",
"CAP_DAC_OVERRIDE",
"CAP_FOWNER",
"CAP_FSETID",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETFCAP",
"CAP_SETGID",
"CAP_SETPCAP",
"CAP_SETUID",
],
"BoundingCaps": [
"CAP_CHOWN",
"CAP_DAC_OVERRIDE",
"CAP_FOWNER",
"CAP_FSETID",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETFCAP",
"CAP_SETGID",
"CAP_SETPCAP",
"CAP_SETUID",
],
"ExecIDs": [],
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/home/dwalsh/.local/share/containers/storage/overlay/e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68/diff",
"UpperDir": "/home/dwalsh/.local/share/containers/storage/overlay/8f3d70434a3db17410ec4710caf4f251f3e4ed0a96a08124e4b3d4af0a0ea300/diff",
"WorkDir": "/home/dwalsh/.local/share/containers/storage/overlay/8f3d70434a3db17410ec4710caf4f251f3e4ed0a96a08124e4b3d4af0a0ea300/work"
}
},
"Mounts": [],
"Dependencies": [],
"NetworkSettings": {
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"Bridge": "",
"SandboxID": "",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": ""
},
"Namespace": "",
"IsInfra": false,
"Config": {
"Hostname": "99f66530fe9c",
"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",
"TERM=xterm",
"container=podman",
"HOME=/root",
"HOSTNAME=99f66530fe9c"
],
"Cmd": [
"echo",
"hi"
],
"Image": "docker.io/library/alpine:latest",
"Volumes": null,
"WorkingDir": "/",
"Entrypoint": "",
"OnBuild": null,
"Labels": null,
"Annotations": {
"io.container.manager": "libpod",
"io.kubernetes.cri-o.Created": "2021-09-16T06:09:08.936623325-04:00",
"org.opencontainers.image.stopSignal": "15"
},
"StopSignal": 15,
"CreateCommand": [
"podman",
"run",
"--name",
"foobar",
"alpine",
"echo",
"hi"
],
"Timezone": "local",
"Umask": "0022",
"Timeout": 0,
"StopTimeout": 10
},
"HostConfig": {
"Binds": [],
"CgroupManager": "systemd",
"CgroupMode": "private",
"ContainerIDFile": "",
"LogConfig": {
"Type": "journald",
"Config": null,
"Path": "",
"Tag": "",
"Size": "0B"
},
"NetworkMode": "slirp4netns",
"PortBindings": {},
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": [],
"CapDrop": [],
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": [],
"GroupAdd": [],
"IpcMode": "shareable",
"Cgroup": "",
"Cgroups": "default",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "private",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": [],
"Tmpfs": {},
"UTSMode": "private",
"UsernsMode": "",
"ShmSize": 65536000,
"Runtime": "oci",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "user.slice",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": 0,
"OomKillDisable": false,
"PidsLimit": 2048,
"Ulimits": [],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"CgroupConf": null
}
}
]

检查指定容器所基于的镜像名称。

$ podman container inspect nervous_fermi --format "{{.ImageName}}"
registry.access.redhat.com/ubi8:latest

检查指定容器所使用的存储驱动程序的名称。

$ podman container inspect foobar --format "{{.GraphDriver.Name}}"
overlay

检查最新创建的容器的 EffectiveCaps 字段。(此选项在远程 Podman 客户端(包括 Mac 和 Windows 上的客户端,不包括 WSL2)上不可用)

$ podman container inspect --latest --format {{.EffectiveCaps}}
[CAP_CHOWN CAP_DAC_OVERRIDE CAP_FOWNER CAP_FSETID CAP_KILL CAP_NET_BIND_SERVICE CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID]

参见

podman(1), podman-container(1), podman-inspect(1)

历史

2021 年 9 月,最初由Dan Walsh 整理编写。