如何从主机获取 Docker 容器的 IP 地址
Posted
技术标签:
【中文标题】如何从主机获取 Docker 容器的 IP 地址【英文标题】:How to get a Docker container's IP address from the host 【发布时间】:2013-06-14 00:13:05 【问题描述】:在创建新容器后,我是否可以运行命令直接从主机获取容器的 IP 地址?
基本上,一旦 Docker 创建了容器,我想滚动自己的代码部署和容器配置脚本。
【问题讨论】:
我只是想确保其他菜鸟不会犯我的错误,并尝试从图像而不是容器中获取 IP。确保您获得 CID 或容器 ID 并进行查询; CID 通过 'docker ps' 即。 【参考方案1】:inspect
的 --format
选项可以解决问题。
现代 Docker 客户端语法是:
docker inspect -f 'range.NetworkSettings.Networks.IPAddressend' container_name_or_id
旧的 Docker 客户端语法是:
docker inspect --format ' .NetworkSettings.IPAddress ' container_name_or_id
这些命令将返回 Docker 容器的 IP 地址。
如 cmets 中所述:如果您使用的是 Windows,请在花括号周围使用双引号 "
而不是单引号 '
。
【讨论】:
这是一个好得多的解决方案。如果可能的话,只问你需要什么! 嗯。使用 Fig/Boot2Docker 在 Mac 上获取<no value>
响应
@cevaris 如果你尝试在一个没有运行的容器上运行它,你会得到<no value>
。在执行此操作之前,请确保您的容器正在运行。
!警告!这不再起作用了。新格式特定于容器并遵循 .NetworkSettings.Networks.$network.IPAddress
的形式。默认似乎是桥接,但在 docker-compose 下,这将是一个特定名称,取决于您的应用程序的名称(我认为来自 --project-name 标志,尽管这也取决于网络配置的类型你已经设置)。我在这里***.com/questions/17157721/…的答案中写了一个完整的答案
也许我是一只昏昏欲睡的羊,但是关于双引号的警告不够大胆和闪烁,不足以引起我的注意。也许提供两个明确标记 Linux 和 Windows 的示例。我实际上只是输入了示例,检查了文档which also uses single quotes,然后用谷歌搜索了错误。我确定我并不孤单。【参考方案2】:
您可以使用docker inspect <container id>
。
例如:
CID=$(docker run -d -p 4321 base nc -lk 4321);
docker inspect $CID
【讨论】:
为了提取ip,您可以执行docker inspect $CID | grep IPAddress | cut -d '"' -f 4
之类的操作,它可以正常工作:)
综合起来,这个 shell 别名应该列出所有容器 id 和它们的 ip:alias dockerip='docker ps | tail -n +2 | while read cid b; do echo -n "$cid\t"; docker inspect $cid | grep IPAddress | cut -d \" -f 4; done'
正如@user3119830 提到的,有一个新的检查选项。现在,您可以使用docker inspect -format ' .NetworkSettings.IPAddress ' $CID
更轻松地获取 Ip
只是一个注释。单破折号选项已被弃用,因此 -format 将变为 --format。
docker inspect -format ' .NetworkSettings.IPAddress ' $CID
是新语法。 -format
已弃用,它变为 --format
。【参考方案3】:
首先获取容器ID:
docker ps
(第一列是容器ID)
使用容器ID运行:
docker inspect <container ID>
在底部的“NetworkSettings”下,您可以找到“IPAddress”
或者干脆做:
docker inspect <container id> | grep "IPAddress"
【讨论】:
太糟糕了,在我的一个实例上(以docker run -it MYCONTAINER /bin/bash
开头),inspect
的输出没有NetworkSettings
部分!
这在 Windows 10 上不起作用。您还需要通过 ipconfig 找出 DockerNAT 的 IP 地址。
@Eric 你也可以检查网桥:docker network inspect bridge | grep Gateway | grep -o -E '[0-9.]+'
我非常喜欢... | grep IP
解决方案,而不是获取 IP 所需的所有格式细节。 +1
@Eric - 您将 container 与 image 混淆了。该命令实际上是docker run -it MYIMAGE
(这不是容器名称);如果您执行docker inspect MYIMAGE
,您将获得有关图像 的静态信息。您需要找到 正在运行的容器 的名称(或按照其他人的建议使用其 id)。在我的系统上,从该图像创建的第一个此类容器默认名称为 MYIMAGE_1
,因此 docker inspect MYIMAGE_1
具有 NetworkSettings。【参考方案4】:
docker inspect CONTAINER_ID | grep "IPAddress"
您可以将-i
添加到 grep 以忽略大小写,那么即使以下内容也可以:
docker inspect CONTAINER_ID | grep -i "IPaDDreSS"
【讨论】:
这个答案与其他 22 个答案有何不同/更好? 这绝对不是最好的答案。 WouterD 的答案就是您正在寻找的答案。 @M.Vanderlee 这个答案有一个更容易记住的命令,这使它成为一个更好的答案 IMO。 @WouterHuysentruit 当然,但是您会得到多个条目和实际的“IPAddress”文本。你不能在没有进一步操作的情况下在脚本中使用它。 你是对的。在问题的上下文中,另一个答案更适合。【参考方案5】:只需一个命令即可获取所有容器名称及其 IP 地址。
docker inspect -f '.Name - .NetworkSettings.IPAddress ' $(docker ps -aq)
如果您使用的是docker-compose
,则命令如下:
docker inspect -f '.Name - range .NetworkSettings.Networks.IPAddressend' $(docker ps -aq)
输出将是:
/containerA - 172.17.0.4
/containerB - 172.17.0.3
/containerC - 172.17.0.2
【讨论】:
我真的很喜欢这个,但它也不适用于 Docker Compose,这与拥有自己的网络有关。而是将.NetworkSettings.IPAddress
更改为range .NetworkSettings.Networks.IPAddressend
这是我使用的变体:docker inspect --format ' .NetworkSettings.IPAddress ' $(docker ps -aq | xargs) | sed -e '/^$/d'
。 sed(1)
删除存在但没有 IP 地址的容器的空行。【参考方案6】:
将此 shell 脚本添加到您的 ~/.bashrc
或相关文件中:
docker-ip()
docker inspect --format ' .NetworkSettings.IPAddress ' "$@"
然后,要获取容器的 IP 地址,只需执行以下操作:
docker-ip YOUR_CONTAINER_ID
对于新版本的 Docker,请使用如下:
docker-ip()
docker inspect --format 'range .NetworkSettings.Networks.IPAddressend' "$@"
【讨论】:
Template parsing error: template: :1:19: executing "" at <.NetworkSettings.IPA...>: map has no entry for key "NetworkSettings"
这对我有用,但需要source ~/.bash_profile
如果您不检查正在运行的容器,而只是检查图像,则会收到此错误...图像没有 IPAddress...可怕的错误消息,是的【参考方案7】:
在 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
【讨论】:
或只是docker exec [container-name-or-id] ip a
适用于 Windows docker exec [container-id or container-name] ipconfig
【参考方案8】:
显示所有容器的 IP 地址:
docker inspect --format='.Name - range .NetworkSettings.Networks.IPAddressend' $(docker ps -aq)
【讨论】:
【参考方案9】:从 Docker 版本 1.10.3 开始,构建 20f81dd
除非你告诉 Docker,否则 Docker 总是在桥接网络中启动你的容器。所以你可以试试下面这个命令:
docker network inspect bridge
然后应该返回一个 Containers 部分,该部分将显示该正在运行的容器的 IP 地址。
[
"Name": "bridge",
"Id": "40561e7d29a08b2eb81fe7b02736f44da6c0daae54ca3486f75bfa81c83507a0",
"Scope": "local",
"Driver": "bridge",
"IPAM":
"Driver": "default",
"Options": null,
"Config": [
"Subnet": "172.17.0.0/16"
]
,
"Containers":
"025d191991083e21761eb5a56729f61d7c5612a520269e548d0136e084ecd32a":
"Name": "drunk_leavitt",
"EndpointID": "9f6f630a1743bd9184f30b37795590f13d87299fe39c8969294c8a353a8c97b3",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
,
"Options":
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
]
【讨论】:
如果您的容器部分为空,这意味着什么?然而容器已经启动并运行。【参考方案10】:执行:
docker ps -a
这将显示活动的 docker 图像:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b733ae18c1c parzee/database "/usr/lib/postgresql/" 6 minutes ago Up 6 minutes 5432/tcp serene_babbage
使用 CONTAINER ID 值:
docker inspect <CONTAINER ID> | grep -w "IPAddress" | awk ' print $2 ' | head -n 1 | cut -d "," -f1
“172.17.0.2”
【讨论】:
【参考方案11】:根据我喜欢的一些答案,我决定将它们合并到一个函数中,以获取所有 IP 地址,另一个用于特定容器。它们现在在我的.bashrc
文件中。
docker-ips()
docker inspect --format='.Name - range .NetworkSettings.Networks.IPAddressend' $(docker ps -aq)
docker-ip()
docker inspect --format 'range .NetworkSettings.Networks.IPAddressend' "$@"
第一个命令给出所有容器的 IP 地址,第二个命令给出特定容器的 IP 地址。
docker-ips
docker-ip YOUR_CONTAINER_ID
【讨论】:
【参考方案12】:我的回答:
docker inspect -f 'range .NetworkSettings.Networks.IPAddressend %tab% .Name' $(docker ps -aq
) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n
也作为 bash 别名:
docker-ips() docker inspect -f 'range .NetworkSettings.Networks.IPAddressend %tab% .Name' $(docker ps -aq) | sed 's#%tab%#\t#g' | sed 's#/##g' | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n
输出按IP地址排序,制表符分隔:
# docker-ips
172.18.0.2 memcached
172.18.0.3 nginx
172.18.0.4 fpm-backup
172.18.0.5 dns
172.18.0.6 fpm-beta
172.18.0.7 exim
172.18.0.8 fpm-delta
172.18.0.9 mariadb
172.18.0.10 fpm-alpha
172.19.0.2 nextcloud-redis
172.19.0.3 nextcloud-db
172.19.0.4 nextcloud
【讨论】:
【参考方案13】:这是一个快速有效的答案:
获取您的容器名称或 ID:
docker container ls
然后获取IP:
docker inspect <container_ID Or container_name> |grep 'IPAddress'
获取端口:
docker inspect <container_ID Or container_name> |grep 'Port'
【讨论】:
【参考方案14】:我编写了以下 Bash 脚本来获取在 docker-compose
下运行的所有容器的 IP 地址表。
function docker_container_names()
docker ps -a --format ".Names" | xargs
# Get the IP address of a particular container
dip()
local network
network='YOUR-NETWORK-HERE'
docker inspect --format " .NetworkSettings.Networks.$network.IPAddress " "$@"
dipall()
for container_name in $(docker_container_names);
do
local container_ip=$(dip $container_name)
if [[ -n "$container_ip" ]]; then
echo $(dip $container_name) " $container_name"
fi
done | sort -t . -k 3,3n -k 4,4n
您应该将变量 network 更改为您自己的网络名称。
【讨论】:
Tuong Le answer from here ***.com/questions/17157721/… 避免在 dip() 中指定网络: docker inspect --format 'range .NetworkSettings.Networks.IPAddress end' "$@"【参考方案15】:Docker 是用 Go 编写的,它也使用 Go 语法进行查询。
要检查特定容器的 IP 地址,您需要运行命令(-f
表示“格式”):
docker inspect -f 'range .NetworkSettings.Networks.IPAddressend' container_id_or_name
对于容器ID或名称,可以运行命令
docker container ls
这将列出每个正在运行的容器。
【讨论】:
这非常有用。我在哪里可以找到编写自己的 Go 查询的文档?【参考方案16】:按名称引用容器:
docker run ... --name pg-master
然后按名称抓取IP地址:
MASTER_HOST=$(docker inspect --format ' .NetworkSettings.IPAddress ' pg-master)
【讨论】:
【参考方案17】:这是我今天用 Python 开发的一个解决方案,使用 docker inspect container
JSON 输出作为数据源。
我有很多容器和基础设施需要检查,我需要以快速且漂亮的方式从任何容器中获取基本网络信息。这就是我制作这个脚本的原因。
重要提示:从 1.9 版开始,Docker 允许您创建多个网络并将它们附加到容器。
#!/usr/bin/python
import json
import subprocess
import sys
try:
CONTAINER = sys.argv[1]
except Exception as e:
print "\n\tSpecify the container name, please."
print "\t\tEx.: script.py my_container\n"
sys.exit(1)
# Inspecting container via Subprocess
proc = subprocess.Popen(["docker","inspect",CONTAINER],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
out = proc.stdout.read()
json_data = json.loads(out)[0]
net_dict =
for network in json_data["NetworkSettings"]["Networks"].keys():
net_dict['mac_addr'] = json_data["NetworkSettings"]["Networks"][network]["MacAddress"]
net_dict['ipv4_addr'] = json_data["NetworkSettings"]["Networks"][network]["IPAddress"]
net_dict['ipv4_net'] = json_data["NetworkSettings"]["Networks"][network]["IPPrefixLen"]
net_dict['ipv4_gtw'] = json_data["NetworkSettings"]["Networks"][network]["Gateway"]
net_dict['ipv6_addr'] = json_data["NetworkSettings"]["Networks"][network]["GlobalIPv6Address"]
net_dict['ipv6_net'] = json_data["NetworkSettings"]["Networks"][network]["GlobalIPv6PrefixLen"]
net_dict['ipv6_gtw'] = json_data["NetworkSettings"]["Networks"][network]["IPv6Gateway"]
for item in net_dict:
if net_dict[item] == "" or net_dict[item] == 0:
net_dict[item] = "null"
print "\n[%s]" % network
print "\n:>13 :>14".format(net_dict['mac_addr'],"IP/NETWORK","GATEWAY")
print "--------------------------------------------"
print "IPv4 settings::>16/:<5 ".format(net_dict['ipv4_addr'],net_dict['ipv4_net'],net_dict['ipv4_gtw'])
print "IPv6 settings::>16/:<5 ".format(net_dict['ipv6_addr'],net_dict['ipv6_net'],net_dict['ipv6_gtw'])
输出是:
$ python docker_netinfo.py debian1
[frontend]
02:42:ac:12:00:02 IP/NETWORK GATEWAY
--------------------------------------------
IPv4 settings: 172.18.0.2/16 172.18.0.1
IPv6 settings: null/null null
[backend]
02:42:ac:13:00:02 IP/NETWORK GATEWAY
--------------------------------------------
IPv4 settings: 172.19.0.2/16 172.19.0.1
IPv6 settings: null/null null
【讨论】:
拜托,在脚本里改成python2.7,python3现在常用还是写两个版本 我会更新我的 Gist,一旦我有了它,我会在这里发布。事实上,这个包装器是为 Python 2.7 设计的。感谢您的反馈!【参考方案18】:我用这个简单的方法
docker exec -it <container id or name> hostname -i
例如
ubuntu@myhost:~$ docker exec -it 3d618ac670fe hostname -i
10.0.1.5
【讨论】:
【参考方案19】: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'
【讨论】:
【参考方案20】:为了扩展 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 ps -q
避免使用 tail
,使用 --format
避免使用 grep。您还可以将多个容器 ID 传递给docker inspect
,而不是在 shell 中循环。
docker ps -q
只显示容器的数字 ID,但我认为使用它们的名称更好。 tail
只是为了摆脱第一行(表头)& 仍然需要。我可以使用--format
,不过:docker ps | tail -n +2 | while read -a a; do name=$a[$(($#a[@]-1))]; echo -ne "$name\t"; docker inspect --format=".NetworkSettings.IPAddress" $name | cut -d \" -f 4; done
。但这似乎不是一个很大的改进......grep
在 IMO 中更具可读性。
略有改动的版本,首先列出 IP,在一行中与容器名称一起:docker ps |尾-n +2 |同时读取-a a;做名称=$a[$(($#a[@]-1))];码头工人检查 $name | grep "IPAddress.*[0-9]\+" | cut -d \" -f 4 | tr "\n" " "; echo -e "\t$name"; 完成
结束于:docker inspect $cid | grep IPAddress | cut -d '"' -f 4 | tail -n 1
【参考方案21】:
注意!!!对于 Docker Compose 用法:
由于 Docker Compose 为每个集群创建了一个隔离的网络,所以下面的方法不适用于 docker-compose
。
最优雅、最简单的方法是定义一个shell函数,目前投票最多的答案@WouterD's:
dockip()
docker inspect --format ' .NetworkSettings.IPAddress ' "$@"
Docker 可以像 Linux 程序一样将容器 ID 写入文件:
使用--cidfile=filename
运行,Docker 将容器的 ID 转储到“文件名”。
有关详细信息,请参阅“Docker runs PID equivalent Section”。
--cidfile="app.cid": Write the container ID to the file
使用 PID 文件:
运行带有--cidfile
参数的容器,app.cid
文件内容如下:
a29ac3b9f8aebf66a1ba5989186bd620ea66f1740e9fe6524351e7ace139b909
您可以使用文件内容来检查 Docker 容器:
blog-v4 git:(develop) ✗ docker inspect `cat app.cid`
您可以使用内联 Python 脚本提取容器 IP:
$ docker inspect `cat app.cid` | python -c "import json;import sys;\
sys.stdout.write(json.load(sys.stdin)[0]['NetworkSettings']['IPAddress'])"
172.17.0.2
这是一种更人性化的形式:
#!/usr/bin/env python
# Coding: utf-8
# Save this file like get-docker-ip.py in a folder that in $PATH
# Run it with
# $ docker inspect <CONTAINER ID> | get-docker-ip.py
import json
import sys
sys.stdout.write(json.load(sys.stdin)[0]['NetworkSettings']['IPAddress'])
有关详细信息,请参阅“10 alternatives of getting the Docker container IP addresses”。
【讨论】:
【参考方案22】:结合之前的答案,根据 Docker 镜像名称查找容器 ID:
docker inspect --format ' .NetworkSettings.IPAddress ' `docker ps | grep $IMAGE_NAME | sed 's/\|/ /' | awk 'print $1'`
【讨论】:
【参考方案23】:如果使用 Docker Toolbox 安装 Docker,可以使用 Kitematic 应用程序获取容器 IP 地址:
-
选择容器
点击设置
单击端口选项卡。
【讨论】:
对我来说,IP 地址位于“主机名/端口”选项卡上,但这仍然是一个非常有用的答案!请注意,当您运行 docker 工具箱时,docker inspect
不起作用。它会报告一个 IP 地址,但它不是您的服务将使用的正确地址。【参考方案24】:
获取容器的IP地址和主机端口:
docker inspect containerId | awk '/IPAddress/ || /HostPort/'
输出:
"HostPort": "4200"
"HostPort": "4200"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
【讨论】:
【参考方案25】:只是为了完整性:
我真的很喜欢 --format
选项,但一开始我并没有意识到它,所以我使用了一个简单的 Python 单行器来获得相同的结果:
docker inspect <CONTAINER> |python -c 'import json,sys;obj=json.load(sys.stdin);print obj[0]["NetworkSettings"]["IPAddress"]'
【讨论】:
这是最酷的答案。另请参阅另一个答案 - ***.com/a/36306632/432903【参考方案26】:对于 Windows 10:
docker inspect --format " .NetworkSettings.IPAddress " containerId
【讨论】:
【参考方案27】:这将列出主机上的所有容器 IP:
sudo docker ps -aq | while read line; do sudo docker inspect -f '.Name - range .NetworkSettings.Networks.IPAddressend' $line ; done
【讨论】:
【参考方案28】:接受的答案不适用于每个容器的多个网络:
> docker inspect -f 'range .NetworkSettings.Networks.IPAddressend' cc54d96d63ea
172.20.0.4172.18.0.5
下一个最佳答案更接近:
> docker inspect cc54d96d63ea | grep "IPAddress"
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.20.0.4",
"IPAddress": "172.18.0.5",
我喜欢用jq
解析网络JSON:
> docker inspect cc54d96d63ea | jq -r 'map(.NetworkSettings.Networks) []'
"proxy":
"IPAMConfig": null,
"Links": [
"server1_php_1:php",
"server1_php_1:php_1",
"server1_php_1:server1_php_1"
],
"Aliases": [
"cc54d96d63ea",
"web"
],
"NetworkID": "7779959d7383e9cef09c970c38c24a1a6ff44695178d314e3cb646bfa30d9935",
"EndpointID": "4ac2c26113bf10715048579dd77304008904186d9679cdbc8fcea65eee0bf13b",
"Gateway": "172.20.0.1",
"IPAddress": "172.20.0.4",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:14:00:04",
"DriverOpts": null
,
"webservers":
"IPAMConfig": null,
"Links": [
"server1_php_1:php",
"server1_php_1:php_1",
"server1_php_1:server1_php_1"
],
"Aliases": [
"cc54d96d63ea",
"web"
],
"NetworkID": "907a7fba8816cd0ad89b7f5603bbc91122a2dd99902b504be6af16427c11a0a6",
"EndpointID": "7febabe380d040b96b4e795417ba0954a103ac3fd37e9f6110189d9de92fbdae",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.5",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:05",
"DriverOpts": null
要列出每个容器的 IP 地址,则变为:
for s in `docker ps -q`; do
echo `docker inspect -f ".Name" $s`:
docker inspect $s | jq -r 'map(.NetworkSettings.Networks) []' | grep "IPAddress";
done
/server1_web_1:
"IPAddress": "172.20.0.4",
"IPAddress": "172.18.0.5",
/server1_php_1:
"IPAddress": "172.20.0.3",
"IPAddress": "172.18.0.4",
/docker-gen:
"IPAddress": "172.18.0.3",
/nginx-proxy:
"IPAddress": "172.20.0.2",
"IPAddress": "172.18.0.2",
【讨论】:
【参考方案29】:Docker 检查用于打印所有容器 ip 及其各自的名称
docker ps -q | xargs -n 1 docker inspect --format 'range .NetworkSettings.Networks.IPAddressend .Name ' | sed 's/ \// /'
【讨论】:
【参考方案30】:对于那些从谷歌来寻找从终端执行命令的解决方案(不是通过脚本)的人,“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
Tab,你会看到类似:
[Filter]> .[0].NetworkSettings.IPAddress
"172.17.0.2"
【讨论】:
以上是关于如何从主机获取 Docker 容器的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章