创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
对于Windows容器,请使用
docker exec <container> ipconfig
其中<container>是容器的名称或id。
您可以使用docker ps来查找容器的id。
其他回答
这对我有用,我正在运行docker工具箱18.09.3,在windows 10家庭版:
键入命令“docker machine ls”
λdocker机器lsNAME活动驱动程序状态URL群集DOCKER错误default*virtualbox正在运行tcp://192.168.98.100:2376版本8.09.6
它将在URL列下显示实际IP。例如,“192.168.98.100”
我必须通过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作为参数。。。
将此shell脚本添加到~/.bashrc或相关文件中:
docker-ip() {
docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$@"
}
然后,要获取容器的IP地址,只需执行以下操作:
docker-ip YOUR_CONTAINER_ID
对于Docker的新版本,请使用以下内容:
docker-ip() {
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
}
您可以使用docker inspect<container id>。
例如:
CID=$(docker run -d -p 4321 base nc -lk 4321);
docker inspect $CID
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}'