对于运行在Docker环境的容器,有时我们想查询它们的一些基本信息,例如环境变量、hostname、ip地址等,接下来我们以一个tomcat容器为例,看看有哪些方式来取得这些信息;
创建tomcat容器
在docker环境下执行如下命令,即可创建一个名为tomcat001的tomcat容器:
1
|
docker run --name tomcat001 -idt tomcat |
执行docker ps检查一下,容器创建成功:
1
2
3
|
root@maven:~ # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 98d119ed4c73 tomcat "catalina.sh run" 10 minutes ago Up 10 minutes 8080 /tcp tomcat001 |
获取信息常用的方式有如下三种:
- 进入容器内部获取信息;
- 执行docker exec命令;
- 执行docker inspect -f命令(推荐方式);
第一种:进入容器内部获取信息
执行以下命令可进入容器内部:
1
|
docker exec -it tomcat001 /bin/bash |
此时已进入容器内部,所以分别执行hostname、ip addr、env这三个命令可以获取相关信息,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
root@98d119ed4c73: /usr/local/tomcat # hostname 98d119ed4c73 root@98d119ed4c73: /usr/local/tomcat # ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1 /8 scope host lo valid_lft forever preferred_lft forever inet6 ::1 /128 scope host valid_lft forever preferred_lft forever 17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link /ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.5 /16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe11:5 /64 scope link valid_lft forever preferred_lft forever root@98d119ed4c73: /usr/local/tomcat # env LD_LIBRARY_PATH= /usr/local/tomcat/native-jni-lib CATALINA_HOME= /usr/local/tomcat LANG=C.UTF-8 HOSTNAME=98d119ed4c73 OPENSSL_VERSION=1.1.0f-3+deb9u1 TOMCAT_VERSION=8.5.24 GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 JAVA_HOME= /docker-java-home/jre TOMCAT_NATIVE_LIBDIR= /usr/local/tomcat/native-jni-lib JAVA_VERSION=8u151 PWD= /usr/local/tomcat HOME= /root CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1 TOMCAT_MAJOR=8 JAVA_DEBIAN_VERSION=8u151-b12-1~deb9u1 TOMCAT_SHA1=9e26ba61c5665aafc849073edeb769be555283cd TERM=xterm SHLVL=1 TOMCAT_ASC_URLS=https: //www .apache.org /dyn/closer .cgi?action=download&filename=tomcat /tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc https: //www-us .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc https: //www .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc https: //archive .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc PATH= /usr/local/tomcat/bin : /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /sbin : /bin TOMCAT_TGZ_URLS=https: //www .apache.org /dyn/closer .cgi?action=download&filename=tomcat /tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz https: //www-us .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz https: //www .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz https: //archive .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz _= /usr/bin/env |
第二种:执行docker exec命令
不用进入容器,直接在docker环境执行docker exec 容器名 容器内命令的方式也可以获取相关信息,举例如下:
- 获取容器的hostname:docker exec tomcat001 hostname
- 获取容器ip地址:docker exec tomcat001 ip addr
- 获取容器环境变量:docker exec tomcat001 env
执行结果如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
root@maven:~ # docker exec tomcat001 hostname 98d119ed4c73 root@maven:~ # docker exec tomcat001 ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link /loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1 /8 scope host lo valid_lft forever preferred_lft forever inet6 ::1 /128 scope host valid_lft forever preferred_lft forever 17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link /ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.5 /16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe11:5 /64 scope link valid_lft forever preferred_lft forever root@maven:~ # docker exec tomcat001 env PATH= /usr/local/tomcat/bin : /usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /sbin : /bin HOSTNAME=98d119ed4c73 LANG=C.UTF-8 JAVA_HOME= /docker-java-home/jre JAVA_VERSION=8u151 JAVA_DEBIAN_VERSION=8u151-b12-1~deb9u1 CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1 CATALINA_HOME= /usr/local/tomcat TOMCAT_NATIVE_LIBDIR= /usr/local/tomcat/native-jni-lib LD_LIBRARY_PATH= /usr/local/tomcat/native-jni-lib OPENSSL_VERSION=1.1.0f-3+deb9u1 GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 TOMCAT_MAJOR=8 TOMCAT_VERSION=8.5.24 TOMCAT_SHA1=9e26ba61c5665aafc849073edeb769be555283cd TOMCAT_TGZ_URLS=https: //www .apache.org /dyn/closer .cgi?action=download&filename=tomcat /tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz https: //www-us .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz https: //www .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz https: //archive .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz TOMCAT_ASC_URLS=https: //www .apache.org /dyn/closer .cgi?action=download&filename=tomcat /tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc https: //www-us .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc https: //www .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc https: //archive .apache.org /dist/tomcat/tomcat-8/v8 .5.24 /bin/apache-tomcat-8 .5.24. tar .gz.asc HOME= /root |
第三种:使用docker inspect命令
推荐使用docker inspect来获取信息,这个命令会返回一个json字符串,里面以key-value的格式准备了该容器相关的信息,内容十分丰富,可以一次性取得全部内容,也可以返回指定key对应的信息;
我们先来看看所有内容,执行命令docker inspect tomcat001,可以看到如下信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
root@maven:~ # docker inspect tomcat001 [ { "Id" : "98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17" , "Created" : "2018-05-06T07:39:45.464492435Z" , "Path" : "catalina.sh" , "Args" : [ "run" ], "State" : { "Status" : "running" , "Running" : true , "Paused" : false , "Restarting" : false , "OOMKilled" : false , "Dead" : false , "Pid" : 22468, "ExitCode" : 0, "Error" : "" , "StartedAt" : "2018-05-06T07:39:46.143092505Z" , "FinishedAt" : "0001-01-01T00:00:00Z" }, "Image" : "sha256:3dcfe809147daf54fbdbe1f6886b4c49df63f28e2b3c8ac119fef6a7f7490d3c" , "ResolvConfPath" : "/var/lib/docker/containers/98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17/resolv.conf" , "HostnamePath" : "/var/lib/docker/containers/98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17/hostname" , "HostsPath" : "/var/lib/docker/containers/98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17/hosts" , "LogPath" : "/var/lib/docker/containers/98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17/98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17-json.log" , "Name" : "/tomcat001" , "RestartCount" : 0, "Driver" : "aufs" , "MountLabel" : "" , "ProcessLabel" : "" , "AppArmorProfile" : "" , "ExecIDs" : [ "cffec99f38514024f6a6e31e0e160d37d295041e4813a2245466be2dbc9c4037" ], "HostConfig" : { "Binds" : null, "ContainerIDFile" : "" , "LogConfig" : { "Type" : "json-file" , "Config" : {} }, "NetworkMode" : "default" , "PortBindings" : {}, "RestartPolicy" : { "Name" : "no" , "MaximumRetryCount" : 0 }, "AutoRemove" : false , "VolumeDriver" : "" , "VolumesFrom" : null, "CapAdd" : null, "CapDrop" : null, "Dns" : [], "DnsOptions" : [], "DnsSearch" : [], "ExtraHosts" : null, "GroupAdd" : null, "IpcMode" : "" , "Cgroup" : "" , "Links" : null, "OomScoreAdj" : 0, "PidMode" : "" , "Privileged" : false , "PublishAllPorts" : false , "ReadonlyRootfs" : false , "SecurityOpt" : null, "UTSMode" : "" , "UsernsMode" : "" , "ShmSize" : 67108864, "Runtime" : "runc" , "ConsoleSize" : [ 0, 0 ], "Isolation" : "" , "CpuShares" : 0, "Memory" : 0, "NanoCpus" : 0, "CgroupParent" : "" , "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" : -1, "OomKillDisable" : false , "PidsLimit" : 0, "Ulimits" : null, "CpuCount" : 0, "CpuPercent" : 0, "IOMaximumIOps" : 0, "IOMaximumBandwidth" : 0 }, "GraphDriver" : { "Name" : "aufs" , "Data" : null }, "Mounts" : [], "Config" : { "Hostname" : "98d119ed4c73" , "Domainname" : "" , "User" : "" , "AttachStdin" : false , "AttachStdout" : false , "AttachStderr" : false , "ExposedPorts" : { "8080/tcp" : {} }, "Tty" : true , "OpenStdin" : true , "StdinOnce" : false , "Env" : [ "PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" , "LANG=C.UTF-8" , "JAVA_HOME=/docker-java-home/jre" , "JAVA_VERSION=8u151" , "JAVA_DEBIAN_VERSION=8u151-b12-1~deb9u1" , "CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1" , "CATALINA_HOME=/usr/local/tomcat" , "TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib" , "LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib" , "OPENSSL_VERSION=1.1.0f-3+deb9u1" , "GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 713DA88BE50911535FE716F5208B0AB1D63011C7 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23" , "TOMCAT_MAJOR=8" , "TOMCAT_VERSION=8.5.24" , "TOMCAT_SHA1=9e26ba61c5665aafc849073edeb769be555283cd" , "TOMCAT_TGZ_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz \thttps://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz \thttps://www.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz \thttps://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz" , "TOMCAT_ASC_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz.asc \thttps://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz.asc \thttps://www.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz.asc \thttps://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz.asc" ], "Cmd" : [ "catalina.sh" , "run" ], "ArgsEscaped" : true , "Image" : "tomcat" , "Volumes" : null, "WorkingDir" : "/usr/local/tomcat" , "Entrypoint" : null, "OnBuild" : null, "Labels" : {} }, "NetworkSettings" : { "Bridge" : "" , "SandboxID" : "50244517221e6faff4217ff5453919f0c297b10434812ecfbf3decb3ce9860f6" , "HairpinMode" : false , "LinkLocalIPv6Address" : "" , "LinkLocalIPv6PrefixLen" : 0, "Ports" : { "8080/tcp" : null }, "SandboxKey" : "/var/run/docker/netns/50244517221e" , "SecondaryIPAddresses" : null, "SecondaryIPv6Addresses" : null, "EndpointID" : "e9336feece03b1c87e6724253575ee50963e9bdc1f9618609fe641a8a939b87a" , "Gateway" : "172.17.0.1" , "GlobalIPv6Address" : "" , "GlobalIPv6PrefixLen" : 0, "IPAddress" : "172.17.0.5" , "IPPrefixLen" : 16, "IPv6Gateway" : "" , "MacAddress" : "02:42:ac:11:00:05" , "Networks" : { "bridge" : { "IPAMConfig" : null, "Links" : null, "Aliases" : null, "NetworkID" : "87eb4d08d408c08489db4460915aabed59210d04f8193364420d3719cd308d83" , "EndpointID" : "e9336feece03b1c87e6724253575ee50963e9bdc1f9618609fe641a8a939b87a" , "Gateway" : "172.17.0.1" , "IPAddress" : "172.17.0.5" , "IPPrefixLen" : 16, "IPv6Gateway" : "" , "GlobalIPv6Address" : "" , "GlobalIPv6PrefixLen" : 0, "MacAddress" : "02:42:ac:11:00:05" } } } } ] |
可见内容十分丰富;
如果我们只对其中的一些感兴趣,例如hostname、ip地址、环境变量,该如何查看呢?
hostname:在返回值中,hostname的位置如下图红框所示,
由上图可见,hostname位于Config.Hostname这个节点位置,所以执行命令docker inspect -f {{.Config.Hostname}} tomcat001即可获取到hostname,如下所示:
1
2
|
root@maven:~ # docker inspect -f {{.Config.Hostname}} tomcat001 98d119ed4c73 |
ip地址:执行命令docker inspect -f {{.NetworkSettings.IPAddress}} tomcat001即可获取到ip地址:
1
2
|
root@maven:~ # docker inspect -f {{.NetworkSettings.IPAddress}} tomcat001 172.17.0.5 |
环境变量:从完整的inspect信息中可以看到环境变量Config.Env的内容是个json数组,所以除了用docker inspect -f {{.Config.Env}} tomcat001获取所有环境变量信息,还可以用docker inspect -f ‘{{index .Config.Env 1}}’ tomcat001命令获取数组中的某一条记录,如下:
1
2
3
4
|
root@maven:~ # docker inspect -f '{{index .Config.Env 1}}' tomcat001 LANG=C.UTF-8 root@maven:~ # docker inspect -f '{{index .Config.Env 2}}' tomcat001 JAVA_HOME= /docker-java-home/jre |
至此,三种获取容器信息的方式已经全部列出,之所以在本文中推荐第三种,是因为有时我们会在shell脚本中获取容器信息,这时候用这种方式最为简单;
到此这篇关于查看Docker容器的信息的方法实现的文章就介绍到这了,更多相关查看Docker容器信息内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/boling_cavalry/article/details/80215214