创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
按名称引用容器:
docker run ... --name pg-master
然后按名称获取IP地址:
MASTER_HOST=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' pg-master)
其他回答
我必须通过docker容器名称提取docker容器IP地址,以便在部署脚本中进一步使用。为此,我编写了以下bash命令:
docker inspect $(sudo docker ps | grep my_container_name | head -c 12) | grep -e \"IPAddress\"\:[[:space:]]\"[0-2] | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
假设将其放置到bash脚本中会很方便,该脚本会期望my_container_name作为参数。。。
显示所有容器的IP地址:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
在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
Inspect对我不起作用。可能是因为我使用了-net主机和一些名称空间。
总之,我发现这很有效:
docker exec -i -t NAME /sbin/ifconfig docker0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
首先获取容器ID:
docker ps
(第一列用于容器ID)
使用容器ID运行:
docker inspect <container ID>
在底部的“网络设置”下,您可以找到IPAddress
或者只针对基于UNIX的系统:
docker inspect <container id> | grep "IPAddress"
对于Windows CMD:
docker inspect <container id> | findstr "IPAddress"