首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用同一主机/端口运行多个Docker容器?

是否可以使用同一主机/端口运行多个Docker容器?
EN

Stack Overflow用户
提问于 2015-06-21 03:56:57
回答 4查看 17.2K关注 0票数 20

我一直在研究在REST服务项目中使用Docker。我的一个问题是,我们是否可以使用Docker在同一主机/端口上运行该服务的多个版本。

例如,我希望一个端点位于{myserver}:8080/v1/,另一个端点位于{myserver}:8080/v2/。

如果相关的话,它们应该是在Spring Boot REST框架上使用java jar构建的基于Java:8的Docker镜像。

对于Docker容器,这是可能的吗?

EN

回答 4

Stack Overflow用户

发布于 2015-06-21 07:56:38

您可以使用不同的主机端口运行这两个容器,并使用haproxy/nginx/varnish (本地或在另一个容器内部)侦听主机端口,然后根据URL重定向到正确的容器。

票数 9
EN

Stack Overflow用户

发布于 2015-06-21 04:07:46

这是一个关于tcp端口工作方式的问题,也是关于docker工作方式的问题。同样,两个应用程序不能绑定到同一个tcp端口,两个docker容器也不能。

正如@Sergei Rodionov指出的那样,SO_REUSEPORT可用于允许多个进程共享同一个tcp端口(这可以在启动java应用程序时指定)。我不认为这可以跨容器工作。

票数 7
EN

Stack Overflow用户

发布于 2015-06-21 08:09:43

是的,这是可能的,只要您正在侦听的每个重复端口使用不同的网络地址。

例如,您的主机分配了以下it: 192.168.11.223 10.88.88.12

您可以有两个单独的容器同时监听: 192.168.11.223:80 10.88.88.12:80

如果你看一下docker run的语法:

代码语言:javascript
复制
-p=[]      : Publish a container᾿s port or a range of ports to the host 
             format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
             Both hostPort and containerPort can be specified as a range of ports. 
             When specifying ranges for both, the number of container ports in the range must match the number of host ports in the range. (e.g., `-p 1234-1236:1234-1236/tcp`)
             (use 'docker port' to see the actual mapping)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30958292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档