Docker 容器应与主机网络通信,但不与主机网络通信

Docker 容器应与主机网络通信,但不与主机网络通信,docker,Docker,我的主机上有两个HTTP服务器;一个监听8080,另一个监听8081。8080是一个webapp,8081是一个API 我还有一个Docker容器,它应该使用自动工具连接到8080上的webapp,并且webapp应该向8081上的API发出HTTP请求 这是我想要的东西的视觉表现: Host machine HTTP 8080 ⇩ ⇖ ⇧ Docker container Host machine HTT

我的主机上有两个HTTP服务器;一个监听
8080
,另一个监听
8081
8080
是一个webapp,
8081
是一个API

我还有一个Docker容器,它应该使用自动工具连接到
8080
上的webapp,并且webapp应该向
8081
上的API发出HTTP请求

这是我想要的东西的视觉表现:

Host machine HTTP 8080
          ⇩            ⇖
          ⇧              Docker container 
Host machine HTTP 8081
我遇到的问题是Docker容器无法连接到主机上的网站
8080
。我不知道为什么,因为我设置了
--network=host
标志,所以它不应该使用主机网络吗

这是我的Docker图像:

## Redacted irrelevant stuff...

EXPOSE 8080 8081
以下是如何运行容器:

docker run -d -p 8080:8080 -p 8081:8081 --network=host --name=app app

你知道我的设置有什么问题吗?

所以你有两个直接在机器上运行的服务,你想部署一个Docker容器,该容器应该连接到其中一个服务。 在这种情况下,不应将这些端口映射到容器,也不应在Dockerfile中公开这些端口,因为这些端口不适用于容器

  • 从Dockerfile中删除
    暴露
    端口
  • 使用
    docker run-d--network=host--name=app-app
    启动容器。容器应该能够使用
    localhost:8080
    访问服务

  • 您好,使用-p发布选项,您不必公开端口(在我看来),并尝试删除您的--network选项-p选项应该有效。感谢您的输入。这似乎并没有解决问题,我的自动工具仍然说它在
    http://localhost:8080
    。要进一步调试…等等,没关系,我有个打字错误。。。一秒钟后可能会接受你的回答。谢谢。尽管我最初的解决方案在技术上可行(我只是在我的Web服务器上有一个没有被记录的输入错误),但我仍然接受这个答案,因为它显示了我的一些冗余和不必要的部分,这总是很好的。:)