Docker是一个开源的应用容器引擎,将应用程序和服务打包到容器中以进行简单而可移植的部署。dockerinspect是Docker提供的命令之一,它可以帮助用户查看某个容器的配置细节,包括容器的文件系统、网络、进程、变量和配置等,为运维人员提供了很多方便。
一、容器架构
dockerinspect命令中的architecture用来查看容器的架构信息。架构信息可以告诉我们容器运行的硬件平台和操作系统信息。在Docker中,支持的架构类型有很多,常见的有x86_64(AMD64)和armv7l(ARM)。使用方法如下:
docker inspect -f '{{.Architecture}}' container_name_or_id
例如,如果我们想获取容器nginx的架构信息:
docker inspect -f '{{.Architecture}}' nginx
输出结果为:amd64。
除了架构信息,还可以通过其他命令查看容器中的操作系统、内核等细节,如下:
docker exec container_name_or_id cat /etc/os-release
docker exec container_name_or_id uname -r
二、容器网络
dockerinspect命令中的networks用来查看容器的网络信息。Docker可以为容器提供不同的网络,例如默认的bridge网桥、host主机模式、自定义网络等。使用方法如下:
docker inspect -f '{{json .NetworkSettings.Networks}}' container_name_or_id
例如,我们想查看容器nginx的网络信息:
docker inspect -f '{{json .NetworkSettings.Networks}}' nginx
输出结果为:
{
"my-net": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"0b089ead4b84"
],
"NetworkID": "22c4cd9cc23adda4dcf4fabed91472bc6b65a1ee172b523ea2d975ef06e301c9",
"EndpointID": "ad67698eedf99fd3d80be90a93cb23bb642edfdd4a33c9d1898c5f1bc9916e3e",
"Gateway": "172.19.0.1",
"IPAddress": "172.19.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:13:00:02",
"DriverOpts": null
},
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"nginx"
],
"NetworkID": "465a63b39da7abd6c8254829532715f232d2f069407a50d39c5ba0a55bb76ad7",
"EndpointID": "305455681f1435f44d062b84b7f7d16744bc10e3619a27baae9a7b79870b20d9",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
},
"host": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"nginx"
],
"NetworkID": "6762082c6d7c41fc5753cef837d64bcf60a684f650e907907a754b79c0c7e87e",
"EndpointID": "17e21932d1866a251d8af7545eccf5523550744f7cb82a2f24fabd7b4353f9f3",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
输出结果表示有三个网络:my-net、bridge和host。每个网络都有对应的IP地址、网关、驱动选项等配置信息。
三、容器进程
dockerinspect命令中的processes用来查看容器中的进程信息。进程信息可以告诉我们容器中哪些进程正在运行、运行的用户、进程的状态和资源使用等。使用方法如下:
docker inspect -f '{{json .State.Processes}}' container_name_or_id
例如,我们想查看容器nginx中进程的信息:
docker inspect -f '{{json .State.Processes}}' nginx
输出结果为:
[
[
1,
"nginx",
"0:accept",
"tcp",
"0.0.0.0:80",
"0.0.0.0:*",
"off"
],
[
7,
"nginx",
"1:access",
"http",
"",
"",
"off"
]
]
输出结果表示在容器中有两个进程,一个是主进程listen 80端口,另一个是access_log进程用来记录访问日志。
四、容器变量和配置
dockerinspect还可以用来查看容器的变量和配置信息。例如,我们可以查看容器中环境变量的值:
docker inspect --format='{{range .Config.Env}} {{println .}} {{end}}' container_name_or_id
例如,我们想查看容器nginx中环境变量的值:
docker inspect --format='{{range .Config.Env}} {{println .}} {{end}}' nginx
输出结果为:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NGINX_VERSION=1.21.3
NJS_VERSION=0.6.1
PKG_RELEASE=1~buster
除了环境变量,还可以查看容器中其他配置文件和卷的细节信息,如下:
docker inspect -f '{{json .Mounts}}' container_name_or_id
docker inspect -f '{{json .Config.Volumes}}' container_name_or_id
五、总结
dockerinspect是一个非常有用的命令,可以帮助我们快速查看和调试Docker容器中的细节信息。本文介绍了dockerinspect命令的几个常用选项,包括容器架构、容器网络、容器进程和容器变量和配置等,希望对大家有所帮助。