Docker Service的端口映射与Docker运行

时间:2018-05-03 11:48:49

标签: docker

通常当我们创建docker容器(例如nginx)并将其暴露给外部时,我们使用端口映射。

docker run -p 8091:80 --name container1 --net my-overlay-a nginx
docker run -p 8092:80 --name container1 --net my-overlay-a nginx ( if in this line if I specified 8091:80 then it create problem as on host machine 8091 already used to map 80 port of container1).

如果我使用docker服务(在此之前我做了docker swarm init),现在不用docker run。

docker service create --name redis --replicas=2 --publish 8080:80 nginx

这也将创建两个容器,但两个容器都由相同的端口8080访问。

这怎么可能?

1 个答案:

答案 0 :(得分:2)

docker swarm使用路由网格技术,入口网络。在创建服务时定义端口时,即使创建了多个容器,服务也会在每个节点中公开相同的端口。并且swarm具有内置的负载均衡器,它将在所有容器中路由流量