由于业务需求,后端服务要拆分为2个有上下游关系的服务,也算是顺应了微服务的潮流,今天分享一下如何将2个docker容器通信,多个容器也是同样的方式。
方案第一步: 创建自定义网络
第二步:通过docker-compose 部署相关服务
- 创建自定义网络,命令:docker network create --driver bridge network_name (network_name 可以自定义,但是需要和yaml文件里的networks的值保持一致)
- 创建docker-compose.yaml文件,并根据实际需求完善内容,例如:
version: "2" services: A_service: image: A_service_image_name ports: - "6666:7777" restart: "on-failure" container_name: A_service networks: - network_name working_dir: /app B_service: image: B_service_image_name ports: - "3333:4444" restart: "on-failure" container_name: B_service networks: - network_name environment: - "A_SERVICE_URL=http://A_service:6666" working_dir: /app networks: network_name: external: true
- 部署服务,命令:docker-compose -f docker-compose.yaml up -d, 此时在Docker里就可以看到一个网络下有2个容器, 进入B容器内,执行命令: ping A_service , 是可以ping通的,也就意味着这2个服务的通信是OK的。
- A_service是下游服务, 供B_service服务调用的, 从上文中的yaml文件可以看出, 定义为:http://A_service:6666, 也就是node名。
- 如果是通过docker run 一个个部署的话, 可以先正常部署A服务,然后在部署B服务时, 利用docker中–link参数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)