1. 首页
  2. 技术知识

查看Docker容器的信息的方法实现

目录

    创建tomcat容器第一种:进入容器内部获取信息第二种:执行docker exec命令第三种:使用docker inspect命令

对于运行在Docker环境的容器,有时我们想查询它们的一些基本信息,例如环境变量、hostname、ip地址等,接下来我们以一个tomcat容器为例,看看有哪些方式来取得这些信息;

创建tomcat容器

在docker环境下执行如下命令,即可创建一个名为tomcat001的tomcat容器:

docker run –name tomcat001 -idt tomcat执行docker ps检查一下,容器创建成功:

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命令(推荐方式);


第一种:进入容器内部获取信息

执行以下命令可进入容器内部:

docker exec -it tomcat001 /bin/bash

此时已进入容器内部,所以分别执行hostname、ip addr、env这三个命令可以获取相关信息,如下:

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

JАVA_HOME=/docker-java-home/jre

TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib

JАVA_VERSION=8u151

PWD=/usr/local/tomcat

HOME=/root

CA_CERTIFICATES_JАVA_VERSION=20220531+nmu1

TOMCAT_MAJOR=8

JАVA_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

执行结果如下所示:

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

JАVA_HOME=/docker-java-home/jre

JАVA_VERSION=8u151

JАVA_DEBIAN_VERSION=8u151-b12-1~deb9u1

CA_CERTIFICATES_JАVA_VERSION=20220531+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,可以看到如下信息:

root@maven:~# docker inspect tomcat001

[

    {

        “Id”: “98d119ed4c73c750e53353e77f7c6942803809a9d5dedc28d8b0f41ce58b8b17”,

        “Created”: “2022-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”: “2022-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”,

                “JАVA_HOME=/docker-java-home/jre”,

                “JАVA_VERSION=8u151”,

                “JАVA_DEBIAN_VERSION=8u151-b12-1~deb9u1”,

                “CA_CERTIFICATES_JАVA_VERSION=20220531+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”: “e9336feece03b1c87e672X3575ee50963e9bdc1f9618609fe641a8a939b87a”,

            “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”: “e9336feece03b1c87e672X3575ee50963e9bdc1f9618609fe641a8a939b87a”,

                    “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,如下所示:

root@maven:~# docker inspect -f {{.Config.Hostname}} tomcat001

98d119ed4c73

ip地址:执行命令docker inspect -f {{.NetworkSettings.IPAddress}} tomcat001即可获取到ip地址:

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命令获取数组中的某一条记录,如下:

root@maven:~# docker inspect -f ‘{{index .Config.Env 1}}’ tomcat001

LANG=C.UTF-8

root@maven:~# docker inspect -f ‘{{index .Config.Env 2}}’ tomcat001

JАVA_HOME=/docker-java-home/jre

至此,三种获取容器信息的方式已经全部列出,之所以在本文中推荐第三种,是因为有时我们会在shell脚本中获取容器信息,这时候用这种方式最为简单;

到此这篇关于查看Docker容器的信息的方法实现的文章就介绍到这了,更多相关查看Docker容器信息内容请搜索共生网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持共生网络!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/105816.html

联系我们