对于运行在Docker环境的容器,有时我们想查询它们的一些基本信息,例如环境变量、hostname、ip地址等,接下来我们以一个tomcat容器为例,看看有哪些方式来取得这些信息;
原文地址:https://blog.csdn.net/boling_cavalry/article/details/80215214
创建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这三个命令可以获取相关信息
第二种:执行docker exec命令
不用进入容器,直接在docker环境执行docker exec 容器名 容器内命令的方式也可以获取相关信息,举例如下:
- 获取容器的hostname:docker exec tomcat001 hostname
- 获取容器ip地址:docker exec tomcat001 ip addr
- 获取容器环境变量:docker exec tomcat001 env
第三种:使用docker inspect命令
推荐使用docker inspect来获取信息,这个命令会返回一个json字符串,里面以key-value的格式准备了该容器相关的信息,内容十分丰富,可以一次性取得全部内容,也可以返回指定key对应的信息;
我们先来看看所有内容,执行命令docker inspect tomcat001
如果我们只对其中的一些感兴趣,例如hostname、ip地址、环境变量,该如何查看呢?
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命令获取数组中的某一条记录。