如何将swarm中的service的端口暴露出去?


将swarm中的service端口暴露出去,供集群外的服务进行访问的 2 种方法:

 

1、路由网格

 

也就是在docker create service时,使用下面的参数

 

--publish published=<published_port>,target=<service_port>

 

 

2、将task端口直接映射到节点主机上

 

在创建service时,使用如下的参数,比上面多了个mode=host

 

--publish mode=host,published=<published_port>,target=<service_port>

 

 

这样,外部的请求就可以通过主机的端口对service中的服务进行访问了。

 

3、两者的区别?

 

  • 路由网格,使用任意的主机的端口都可以访问
  • 路由网格,节点上不一定必须运行task (比如:5个节点,一个实例,但是通过任意的节点都能访问)

 

  • 直接端口映射,节点无task,无法访问 (比如:5个节点,一个实例,只有在节点所在的主机上才能访问这个服务,其他的节点无法访问)
posted @ 2022-09-20 15:14  Zhai_David  阅读(546)  评论(0编辑  收藏  举报