我可以得到我的docker集装箱内的IP地址?

如何获得此容器内的容器IP地址?

'docker inspect $ hostname …'不适合,因为我不会将/var/run/docker.sock主机文件共享到容器。

由于IP地址位于/ etc / hosts的第一行,因此可以在容器中执行awk命令,以打印/ etc / hosts第一行的第一个字

gg@805689be5f47:/$ awk 'END{print $1}' /etc/hosts 172.17.0.14

我可以findIP地址

 hostname -i 

当然,如果有多个接口,这可能并不完全准确。

编辑

注意:根据主机名手册页, hostname -i使用DNSparsingIP地址,其中hostname -I显示除回环以外的所有地址,不依赖于DNS,因此推荐使用。

在我的所有Docker容器中, -i-I返回相同的结果(但在我的桌面上却不是这种情况)。

通常你可以使用linux程序ifconfig来获取IP地址和其他networking细节。 您的容器可能没有它,在这种情况下,您需要通过apt-getyum或您的发行版软件包pipe理器进行安装。 一个基本的pipe道获取IP地址将是

 ifconfig eth0 | grep "inet addr:" | cut -d : -f 2 | cut -d " " -f 1 

我find了解决我的问题的方法:

 /sbin/ip route|awk '/scope/ { print $9 }' 

这是打印的东西,如:'172.17.0.135'

为什么不像以下那样简单:

 grep "`hostname`" /etc/hosts|awk '{print $1}' 

要么

 grep "$HOSTNAME" /etc/hosts|awk '{print $1}' 

您还可以在/ etc / hosts中查找以容器ID结尾的行并打印第一个字段:

 sed -n 's/^\([0-9\.]*\)[[:blank:]]*[0-9a-f]\{12,\}$/\1/p' /etc/hosts 

我会使用awk,但是dedian中的标准awk:jessie不支持像{12,}这样的正则expression式量词。