我可以得到我的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-get
或yum
或您的发行版软件包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式量词。