Docker 带有“--network host”不允许访问应用程序端口

Alf*_*oon 13 docker spring-boot docker-network

我在 docker 中有 Spring Boot 应用程序,并且我正在像这样运行我的应用程序:

docker run  --rm --network host --name myapp1 myapp
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从主机访问它时,它失败了:

my_machine:~ root$ curl localhost:8081/someendpoint -v
*   Trying ::1...
* TCP_NODELAY set
* Connection failed
* connect to ::1 port 8081 failed: Connection refused
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connection failed
* connect to 127.0.0.1 port 8081 failed: Connection refused
* Failed to connect to localhost port 8081: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 8081: Connection refused
Run Code Online (Sandbox Code Playgroud)

我不清楚 - 为什么它不起作用?它在 docker 内部工作得很好。myapp 连接外部 docker 镜像/互联网也没有问题。请帮忙。

Lor*_*rin 10

来自https://docs.docker.com/network/host/

主机网络驱动程序仅适用于 Linux 主机,Docker Desktop for Mac、Docker Desktop for Windows 或 Docker EE for Windows Server 不支持。

既然你说你使用的是macOS--network host将无法正常工作。我认为根本原因是,在 Linux 之外,使用虚拟机来托管容器。容器共享网络的主机是虚拟机的,而不是物理主机的。