docker - Docker 每个网络端口映射
问题描述
我正在寻找一种将同一端口映射到 2 个不同端口的方法,每个端口用于不同网络中的另一个容器。考虑以下 docker-compose 场景:
services:
web:
build: .
ports:
- "8080:8080"
networks:
Net1:
Net2:
serv1:
image: tomcat:7.0.92-jre8
networks:
Net1:
serv2:
image: tomcat:7.0.92-jre8
networks:
Net2:
现在我真正想做的是实际映射“web”服务端口 8080,以便 serv1 可以将其作为 8081 使用,而 serv2 将其作为 8082 使用。
这甚至可能吗?
谢谢
解决方案
端口会发布到主机,而不是 docker 网络,也不会发布到其他 docker 容器。所以上面的“8080:8080”将docker主机上的8080端口映射到容器的8080端口。
对于容器到容器的通信,使用 docker 的内部 DNS 进行服务发现和容器端口。因此 serv1 和 serv2 都可以连接到http://web:8080以访问其容器端口上的 Web 服务。这绝不会阻止 serv1 和 serv2 在他们自己的容器内侦听他们希望的任何端口。
推荐阅读
- dart - iOS Widget 像 Flutter 中的屏幕
- vue.js - axios 配置默认 GET 参数
- github - 在 github 上更改用户名后 Heroku 出错
- python - 如何在python中生成条形码作为图像对象的响应
- c++ - Overlappig 小部件的 QT 自定义布局示例无法编译
- javascript - 将pdf(来自window.print)保存到js var
- c++ - 使用离轴投影实现相机
- python - nlp 多标签分类 tf vs tfidf
- c# - 训练集有 0 个实例,中止训练异常
- cactoos - Cactoos Checkstyle 配置文件