我的主机上有两个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
任何想法我的设置有什么问题?
答案 0 :(得分:1)
因此,您有两个直接在计算机上运行的服务,并且您希望部署一个应该连接到其中一个服务的Docker容器。 在这种情况下,您不应该将这些端口映射到容器,并且您不应该在Dockerfile中公开这些端口,因为这些端口不适用于容器。
Expose
端口
docker run -d --network=host --name=app app
启动容器。容器应该能够使用localhost:8080
。