搭建 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命令
安装一个