搭建 docker swarm 对外访问服务

2019-08-21  本文已影响0人  shoyu666
搭建 docker swarm 对外访问服务

背景:
创建2个服务A,B;A运行在Host A中,B运行在Host B中
A能访问B,B能对外提供服务
image.png
swarm搭建
1:Host A,B 分布安装docker
2: Host A 设置为是Swarm Manager,Host B加入A的Swarm 成为Swarm worker

参考:https://docs.docker.com/get-started/part4/
在Host A主机上使用docker node命令为node(Host B)添加label:node.labels.where==B
docker-compose.yml用到(用于指定服务运行在哪台机子上)
参考:https://docs.docker.com/swarm/scheduler/filter
#docker-compose.yml 服务描述
version: '3'
services:
  serviceA:
    image: nginx
  serviceB:
    image: nginx
    #对外暴露服务(8000端口)
    ports:
      - "8000:80"
    deploy:
      placement:
        constraints: 
        #指定运行在Host B上
           - node.labels.where==B
networks:
#overlay网络,serviceA,serviceB在同一个overlay网络上
  overlay:

在Host A上执行  docker stack deploy -c docker-compose.yml  d

serviceA和serviceB都会部署在Host A创建的集群里面。
serviceA的container A实际运行在Host A
serviceB的container B实际运行在Host B
进入container A Ping container B 
在Host A上访问http://ip{Host A}:8000 可以访问serviceB
异常解决:
1:以上配置正确,Host A无法访问Host B
检查防火墙,docker需要开启多个端口详见链接
https://www.digitalocean.com/community/tutorials/how-to-configure-the-linux-firewall-for-docker-swarm-on-ubuntu-16-04

2:进入container A 没有ping命令
安装一个
上一篇下一篇

猜你喜欢

热点阅读