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

时间:2018-03-16 13:59:29

标签: docker

我的主机上有两个HTTP服务器;一个人在8080上听,另一个人在8081上听。 8080是一个网络应用,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

任何想法我的设置有什么问题?

1 个答案:

答案 0 :(得分:1)

因此,您有两个直接在计算机上运行的服务,并且您希望部署一个应该连接到其中一个服务的Docker容器。 在这种情况下,您不应该将这些端口映射到容器,并且您不应该在Dockerfile中公开这些端口,因为这些端口不适用于容器。

  1. 从Dockerfile
  2. 中删除Expose端口
  3. 使用docker run -d --network=host --name=app app启动容器。容器应该能够使用localhost:8080
  4. 访问服务