查看Docker容器的信息

网友投稿 495 2022-10-19

查看Docker容器的信息

欢迎访问我的GitHub

对于运行在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: 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: 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://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://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: 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: 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://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz TOMCAT_ASC_URLS= https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz.asc HOME=/root

第三种:使用docker inspect命令

由上图可见,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 JAVA_HOME=/docker-java-home/jre 至此,三种获取容器信息的方式已经全部列出,之所以在本文中推荐第三种,是因为有时我们会在shell脚本中获取容器信息,这时候用这种方式最为简单;

欢迎关注51CTO博客:程序员欣宸

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker第三篇(docker单机管理)
下一篇:超详细讲解Java秒杀项目用户验证模块的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~