创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
Inspect对我不起作用。可能是因为我使用了-net主机和一些名称空间。
总之,我发现这很有效:
docker exec -i -t NAME /sbin/ifconfig docker0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
其他回答
Linux容器
.方法1
docker exec postgres ifconfig
.方法2
docker exec postgres cat /etc/hosts
.方法3
码头管理人员
.方法4
使用Powershell
docker inspect postgres | select-string 'ipaddress'
有多种方法可以从主机获取容器的IP
docker inspect-f“{{range.NetworkSettings.Networks}}{{.IPAddress}}}{{end}”containerID
如果您记不住上面的命令,您可以始终执行以下操作
码头工人检查集装箱ID
它将在返回信息后返回Docker对象的低级信息。查找“网络”,然后在其中找到容器的“IPAddress”
仅为完整起见:
我真的很喜欢--format选项,但一开始我不知道它,所以我使用了一个简单的Python单行程序来获得相同的结果:
docker inspect <CONTAINER> |python -c 'import json,sys;obj=json.load(sys.stdin);print obj[0]["NetworkSettings"]["IPAddress"]'
要获取容器的IP地址和主机端口,请执行以下操作:
docker inspect containerId | awk '/IPAddress/ || /HostPort/'
输出:
"HostPort": "4200"
"HostPort": "4200"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
我用这个简单的方法
docker exec -it <container id or name> hostname -i
e.g
ubuntu@myhost:~$ docker exec -it 3d618ac670fe hostname -i
10.0.1.5