项目架构图
docker swarm 集群服务通信
前置要求
- 服务需要在同一个docker swarm集群中
- 服务需要处于同一个overlay网络上
- 服务需要暴露容器端口
- 有2个以上服务名不同的服务
服务部署流程(手动方式)
1、 创建overlay网络12docker network create --driver overlay lvdoo-networkdocker network ls
2、 创建swarm服务12docker service create --name ai_voice_engine-development --network lvdoo-networ --replicas 1 --with-registry-auth ai_voice_engine-development:1.1.112
参数说明
- network: 指定overloy网络,只有在同一网络中的服务才可以通过服务名+端口号进行通信
- replicas: 可以理解为在swarm集群中会起多少个实例
- with-registry-auth: 启动容器所指定的镜像
3、 暴露端口1docker service update --publish-add published=18088,target=18088 ai_voice_engine-development
参数说明
- published:对外暴露的端口
- target: 容器暴露的端口
自动化部署swarm服务
ansible脚本示例
|
|
测试容器间通信
已部署好两个docker swarm 服务,如下图:
服务名 | 容器内端口 | 对外暴露端口 |
---|---|---|
ai_callcenter-development | 8080 | 18084 |
ai_voice_engine-development | 18088 | 18088 |
登录ai_callcenter-development 容器中12docker ps |grep ai_callcenter docker exec -it 容器id /bin/bash
访问ai_voice_engine-development服务
注意:服务名+端口号,这个端口号是容器内的端口,而不是对外暴露的端口,这里正好两个端口是一致的。如下图所示,出现Hello world表示两个服务间通信成功。