Docker Swarm 学习笔记(六): 暴露 Docker Swarm 集群中的服务至外部
                            huty
                            2023年05月19日  ·  阅读 3,637
                        
                    1、 暴露新端口
方式一: 在创建新服务时直接暴露端口
docker service create --name 服务名称 --publish published=服务端口,target=容器端口,protocol=端口协议,mode=模式 镜像名称:镜像TAG
参数说明:
--name: 服务名称--publish: 需要暴露的端口。published为服务端口target为容器端口protocol为端口协议(可选tcp、udp,不配置时默认为tcp)mode为端口模式(可选ingress、host,不配置时默认为ingress);ingress: 使用 Swarm 集群路由进行代理- 发送至该端口的请求会先达到 Swarm 集群的路由,再由路由将请求转发至任一可用的服务
 - 无论服务的副本数为多少,访问集群任意主机的该端口,均可正常访问服务
 
host:主机模式(不使用路由)- 发送至该端口的请求直接到达主机对应的服务,不经过 Swarm 集群的路由
 - 发送至指定主机的请求,只会由此主机处理,不会转发至其他主机,因此当某主机不存在该服务的副本时,直接发送至此主机的请求将无法正常访问服务
 - 一般情况下,设置端口模式为 host 时,会同时将服务的模式设置为 global ,这样可以保证此服务在集群的每个主机中都存在一个副本,从而保证请求任意主机均可正常使用服务,同时也可以保证指定主机的请求只会被指定主机处理,不会被转发至其他的主机
 
示例:
docker service create --name my-web --publish published=10080,target=80 --replicas 3 nginx:1.24.0-alpine
此时访问 Swarm 集群任意主机的 10080 端口,即可访问到此 Nginx 服务
方式二: 暴露已有服务的端口
docker service update --publish-add published=服务端口,target=容器端口,protocol=端口协议,mode=模式 服务名称
参数说明:
--publish-add: 新增需要暴露的端口。具体内容见上方说明
示例:
docker service update --publish-add published=16379,target=6379 redis
此时访问 Swarm 集群任意主机的 16379 端口,即可访问到此 Redis 服务
2、 查看当前暴露的端口
docker service inspect --format="{{json .Endpoint.Spec.Ports}}" 服务名称
示例:
docker service inspect --format="{{json .Endpoint.Spec.Ports}}" redis
3、 移除暴露的端口
docker service update --publish-rm published=服务端口,target=容器端口,protocol=端口协议,mode=模式 服务名称
参数说明:
--publish-rm: 删除现有暴露的端口。具体内容见上方说明
示例:
docker service update --publish-rm published=16379,target=6379 redis
                分类:
                                Docker
                                DockerSwarm
                    
                    标签:
                                Docker
                                DockerSwarm
                    
                
评论已关闭