创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
只是另一个经典的解决方案:
docker ps -aq | xargs docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}'
其他回答
在Docker 1.3+中,您也可以使用以下方法进行检查:
输入正在运行的Docker(Linux):
docker exec [container-id or container-name] cat /etc/hosts
172.17.0.26 d8bc98fa4088
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.17 mysql
对于窗口:
docker exec [container-id or container-name] ipconfig
如果您使用Docker工具箱安装Docker,则可以使用Kitematic应用程序获取容器IP地址:
选择容器单击设置在“端口”选项卡中单击。
要获取容器的IP地址和主机端口,请执行以下操作:
docker inspect containerId | awk '/IPAddress/ || /HostPort/'
输出:
"HostPort": "4200"
"HostPort": "4200"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
按名称引用容器:
docker run ... --name pg-master
然后按名称获取IP地址:
MASTER_HOST=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' pg-master)
Inspect对我不起作用。可能是因为我使用了-net主机和一些名称空间。
总之,我发现这很有效:
docker exec -i -t NAME /sbin/ifconfig docker0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'