首页 > 技术文章 > Docker容器间通信

gt1987 2020-09-15 14:48 原文

如何实现Docker容器间的通信,假设有以下场景,本机部署多个容器,想要实现:

  • 数据库使用Docker部署,如何去连接
  • 服务A依赖服务B,需要调用Http请求

容器部署完,端口映射好后,正常从本地localhost:{port}是可以访问的,但是如果从容器A内部访问容器B是调不通的。这里涉及到Dockert网络通信相关知识。官方文档:https://docs.docker.com/network/

具体操作如下:

  • 创建自定义网络设置 docker network create my-net
  • 将相关容器加入该网络 docker network connect my-net my-containerId。也可以在创建容器的时候,命令行上加上 --network my-net
  • 调整连接配置,假设服务A依赖容器mssql,端口映射为 -p 1444:1433。本地的连接字符串为 Server=localhost,1444;Database=MyContext;User ID=sa;Password=123456@SA;Connect Timeout=30。调整为Server=mssql;Database=MyContext;User ID=sa;Password=123456@SA;Connect Timeout=30, mssql 为容器mssql的容器name。

注意这里映射的端口号是容器内部的端口号,而不是映射到外部的端口号,连接字符串用的是mssql默认端口,不用特别标记。

这样容器与容器之间以容器name相互通信。

推荐阅读