创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
创建新容器后,是否可以运行命令从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我就想滚动我自己的代码部署和容器配置脚本。
当前回答
docker inspect<container id>| grep-i“ipad地址”
其他回答
只需一个命令即可获取所有容器名称及其IP地址。
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
如果您使用docker compose,则命令如下:
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
输出将为:
/containerA - 172.17.0.4
/containerB - 172.17.0.3
/containerC - 172.17.0.2
为了扩展ko-dos的答案,这里有一个别名来列出所有容器名称及其IP地址:
alias docker-ips='docker ps | tail -n +2 | while read -a a; do name=${a[$((${#a[@]}-1))]}; echo -ne "$name\t"; docker inspect $name | grep IPAddress | cut -d \" -f 4; done'
还没有人提出Docker Python API。Docker API获取IP地址的解决方案相当简单。
*基于NIX的操作系统:dockerapi3.7(由于canadadry的评论而更新)
import docker
client = docker.DockerClient(base_url='unix://var/run/docker.sock')
x_container = client.containers(filters={"name":"x_container"})[0]
x_ip_addr = x_container["NetworkSettings"]["Networks"]["NETWORK_NAME"]["IPAddress"]
OS不可知:dockerapi4.0.x(由于评论中的pds而添加)
import docker
client = docker.from_env()
container = client.containers.get(container_name)
vars( container )["attrs"]["NetworkSettings"]["Networks"]["<NETWORK_NAME>"]["IPAddress"]
不太难找到,但很有用。此外,这可以很容易地修改,以查找分配给各种网络上的容器的所有IP。
如果您使用的是Windows,您可能无法从docker inspect获得任何信息,在这种情况下,您最好的选择是实际使用ipconfig/all并查找以太网适配器vEthernet(WSL):部分,在该部分您可以看到IPv4地址…:xxx.xxx.xxx.xxx(首选)-这将是您可以在本地浏览器的url中使用的IP。
对于那些从谷歌来寻找从终端执行命令的解决方案(而不是通过脚本)的人来说,“jid”是一个交互式JSON向下钻取实用程序,具有自动完成和建议功能,它可以让你用更少的键入来做同样的事。
docker inspect $CID | jid
键入Tab.Net Tab,您将看到类似的内容:
[Filter]> .[0].NetworkSettings
{
"Bridge": "",
"EndpointID": "b69eb8bd4f11d8b172c82f21ab2e501fe532e4997fc007ed1a997750396355d5",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"HairpinMode": false,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"Aliases": null,
"EndpointID": "b69eb8bd4f11d8b172c82f21ab2e501fe532e4997fc007ed1a997750396355d5",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
键入.IPA选项卡,您将看到类似的内容:
[Filter]> .[0].NetworkSettings.IPAddress
"172.17.0.2"