从docker容器访问localhost

问题描述 投票:0回答:2

我有一个任务要在 localhost:8081、localhost:8082 和 localhost:8083 上设置 3 个 docker 容器,我已经成功完成了。然后最后一个容器是 localhost:8080 上的一个 java 应用程序,它需要发送使用 HttpClient 和 HttpRequest 向其他容器发出请求我已经使用“docker network create web_server --driver brigde”创建了一座桥,并且我使用 --network web_server 运行容器,这样它们就可以使用容器名称进行通信作品。但是我的老师告诉我将请求发送到http://localhost:8081、8082等。有没有办法让容器访问localhost?我在 Linux 上使用 docker

java docker
2个回答
18
投票

在 Linux 容器上,您可以使用 IP 地址访问主机

172.17.0.1
。因此,从 Java 应用程序内部,您应该能够访问
172.17.0.1:8081
172.17.0.1:8082
172.17.0.1:8083
上的其他容器。这相当于在主机上使用
localhost:8081
localhost:8082
localhost:8083

更新,2024 年 5 月:虽然上述方法有效,但您现在应该使用

--add-host
和特殊的
host-gateway
值将 DNS 条目添加到主机的容器中。常见的方法是使用
--add-host host.docker.internal=host-gateway
作为
docker run
的选项。这将允许您使用主机名访问主机
host.docker.internal


4
投票

--network="host"
命令上添加
docker run
,那么 docker 容器中的 127.0.0.1 将指向你的 docker 主机。 (仅适用于 Linux 或 Windows 容器上的 docker)

对于 docker for mac 或 docker for windows 只需使用主机连接服务

host.docker.internal
而不是
127.0.0.1

© www.soinside.com 2019 - 2024. All rights reserved.