Docker 服务和 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 (在此之前我确实进行了 docker swarm init(。

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

这还将创建两个容器,但这两个容器都由同一端口 8080 访问。

这怎么可能?

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

最新更新