Docker SwarmDocker容器程序员

Docker Swarm 入门:Service Network

2018-01-16  本文已影响415人  Anoyi

Swarm 集群产生两种不同类型的流量:

在 Swarm Service 中有三个重要的网络概念:

Manager 节点的网络情况

► Swarm Services 网络

以 mongo 和 mongo-express (MongoDB 数据 Web 可视化) 镜像作为示例,演示 Swarm 下服务间的网络应用。

1、创建 overlay 网络,作用范围为 swarm

提示:overlay 网络创建可以在 Swarm 集群下的任意节点执行,并同步更新到所有节点。

 docker network create \
  --driver overlay \
  mongo_network

2、将服务附加到指定网络 mongo_network

示例:启动 2 个副本的 MongoDB 服务 mongo

docker service create \
  --name mongo \
  --replicas 2 \
  --network mongo_network \
  mongo

此处服务没有对外发布端口,外部无法连接 MongoDB。

3、服务间网络通信

示例:启动 1 个副本的 MongoExpress 服务 mongo-express,连接到 mongo 服务,并对外暴露 80 端口,使得外部可以访问。

docker service create \
    --name mongo-express \
    --network mongo_network \
    --publish published=80,target=8081 \
    -e ME_CONFIG_MONGODB_SERVER="mongo" \
    -e ME_CONFIG_MONGODB_PORT=27017 \
    mongo-express
当前服务

此时,mongo-express 服务已映射到 Swarm 所有节点的 80 端口。虽然这个服务只部署了一个副本,但是访问任意节点的都能请求到
mongo-express

各节点的端口映射 MongoExpress

如上图所示,Hostname 有两个不同的值,分别对应到 mongo 服务下两个副本的容器 ID。由于,在 Swarm 集群下创建服务,网络默认使用 VIP 模式,会为该服务生成一个虚拟IP,该 IP 会在所有副本容器节点轮训漂移,这样,mongo-express 会轮训的连接到 mongo 的 2个副本容器。

4、查看 VIP 地址

显示网络详情

docker service inspect mongo

5、查看 MongoDB 容器地址

查看容器所在的节点

docker service ps mongo

查看容器IP

docker inspect 容器ID

6、总结


未完待续。。。

上一篇下一篇

猜你喜欢

热点阅读