docker service create --name 服务名称 --publish published=服务端口,target=容器端口,protocol=端口协议,mode=模式 镜像名称:镜像TAG
参数说明:
--name : 服务名称--publish : 需要暴露的端口
published 为服务端口target 为容器端口protocol 为端口协议(可选 tcp、udp,不配置时默认为 tcp )mode 为端口模式(可选 ingress、host,不配置时默认为 ingress)
ingress : 使用 Swarm 集群路由进行代理
host :主机模式(不使用路由)
示例:将 nginx 容器的 80 端口暴露至主机的 10080 端口,使得在访问 Swarm 集群任意主机的 10080 端口,均可访问到此 Nginx 服务
docker service create --name my-web --publish published=10080,target=80 --replicas 3 nginx:1.24.0-alpine
docker service update --publish-add published=服务端口,target=容器端口,protocol=端口协议,mode=模式 服务名称
参数说明:
--publish-add : 新增需要暴露的端口。具体内容见上方方式一中的说明示例:
docker service update --publish-add published=16379,target=6379 redis
此时访问 Swarm 集群任意主机的 16379 端口,即可访问到此 Redis 服务
docker service inspect --format="{{json .Endpoint.Spec.Ports}}" 服务名称
示例:
docker service inspect --format="{{json .Endpoint.Spec.Ports}}" redis
docker service update --publish-rm published=服务端口,target=容器端口,protocol=端口协议,mode=模式 服务名称
参数说明:
--publish-rm : 删除现有暴露的端口。具体内容见上方说明示例:
docker service update --publish-rm published=16379,target=6379 redis