容器之间通信

容器之间通信,第1张

容器之间通信 背景

由于业务需求,后端服务要拆分为2个有上下游关系的服务,也算是顺应了微服务的潮流,今天分享一下如何将2个docker容器通信,多个容器也是同样的方式。

方案

第一步: 创建自定义网络
第二步:通过docker-compose 部署相关服务

具体步骤
  1. 创建自定义网络,命令:docker network create --driver bridge network_name (network_name 可以自定义,但是需要和yaml文件里的networks的值保持一致)
  2. 创建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
  1. 部署服务,命令:docker-compose -f docker-compose.yaml up -d, 此时在Docker里就可以看到一个网络下有2个容器, 进入B容器内,执行命令: ping A_service , 是可以ping通的,也就意味着这2个服务的通信是OK的。
注意
  1. A_service是下游服务, 供B_service服务调用的, 从上文中的yaml文件可以看出, 定义为:http://A_service:6666, 也就是node名。
  2. 如果是通过docker run 一个个部署的话, 可以先正常部署A服务,然后在部署B服务时, 利用docker中–link参数。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5180424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存