虽然Docker命令让你能够访问有关镜像和容器的信息,但有时你想要了解这些Docker对象的内部元数据,如IP地址。
问题
你想找出容器IP地址。
解决方法
使用docker inspect命令获取和过滤容器元数据。
讨论
通过docker inspect命令能得到JSON格式的docker内部元数据。这会得到很多数据,所以下面只列出一部分。
镜像的原始数据:
- $ docker inspect ubuntu | head
- [{
- "Architecture": "amd64",
- "Author": "",
- "Comment": "",
- "Config": {
- "AttachStderr": false,
- "AttachStdin": false,
- "AttachStdout": false,
- "Cmd": [
- "/bin/bash"
- $
你可以通过名称或ID来查看镜像和容器的信息。当然它们的元数据会有所不同 – 比如容器会有“state”字段,而镜像没有。
你可以通过docker inspect命令,带一个format参数来找出容器的IP:
- docker inspect --format '{{.NetworkSettings.IPAddress}}'
这个命令对于自动化可能会比较有用,而且这个命令获取的IP比通过其它docker命令要可靠得多。下面的命令是获取所有运行的容器的IP并尝试ping它们。
- $ docker ps -q | xargs docker inspect --format='{{.NetworkSettings.IPAddress}}' | xargs -l1 ping -c1
- PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
- 64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.095 ms
- --- 172.17.0.5 ping statistics ---
- 1 packets transmitted, 1 received, 0% packet loss, time 0ms
- rtt min/avg/max/mdev = 0.095/0.095/0.095/0.000 ms