创建新容器后,是否可以运行命令从主机获取容器的IP地址?

基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。


当前回答

docker inspect<container id>| grep-i“ipad地址”

其他回答

for containerId in $(sudo docker ps -a | cut -f1 -d' ' | grep -v CONTAINER); do
    echo " ContainerId - $containerId >>  $(sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $containerId) "
done

如果您使用的是Windows,您可能无法从docker inspect获得任何信息,在这种情况下,您最好的选择是实际使用ipconfig/all并查找以太网适配器vEthernet(WSL):部分,在该部分您可以看到IPv4地址…:xxx.xxx.xxx.xxx(首选)-这将是您可以在本地浏览器的url中使用的IP。

对于Windows容器,请使用

docker exec <container> ipconfig

其中<container>是容器的名称或id。

您可以使用docker ps来查找容器的id。

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <containername or containerID here>

如果将容器部署到默认网桥网络,则上述方法有效。

然而,如果使用自定义网桥网络或覆盖网络,我发现以下方法效果更好:

docker exec <containername or containerID here> /sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'

使用Python新API:

import docker

client = docker.DockerClient()
container = client.containers.get("NAME")
ip_add = container.attrs['NetworkSettings']['IPAddress']
print(ip_add)