首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker容器之间的套接字连接失败

问docker容器之间的套接字连接失败
EN

Stack Overflow用户
提问于 2020-03-18 10:29:32
回答 2查看 92关注 0票数 0

我通过一个docker-compose文件部署了多个容器,如下所示

代码语言:javascript
复制
version: '3'
services:
  module2:
    restart: always
    build:
      dockerfile: Dockerfile
      context: ./Module-2
    ports:
      - '16667:16667'
  module3:
    build:
      dockerfile: Dockerfile
      context: ./Module-3
    ports:
      - '16669:16669'

模块2接受来自外部源的套接字请求,并按预期工作。当模块2尝试与模块3连接时,问题就开始了

模块2代码(JAVA)

代码语言:javascript
复制
 private int socket_port = 16669;
    private String server = "127.0.0.1";

    public TextOutputSocket() {

    }

    public TextOutputSocket(String host, int socket_port) {
        this.server = host;
        this.socket_port = socket_port;
    }

    public void sendText(String textToSend) {
        OutputStream os = null;
        Socket sock = null;
        try {
            System.out.println("Connecting to " + server + ":" + socket_port);
            sock = new Socket(server, socket_port);

            os = sock.getOutputStream();

模块3代码(GO)

代码语言:javascript
复制
ln, err := net.Listen("tcp", ":16669")
    if err != nil {
        fmt.Println(err)
        // handle error
    }

每当我尝试发送请求时,模块2都会收到一个连接被拒绝的错误。

我觉得我对docker网络没有最好的理解,我想这就是问题所在。提前感谢您的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-18 10:46:25

在您的例子中,当您启动docker-compose时,module2和module3 2容器将在同一个docker网络中,并且它们可以分别使用它们的DNS名称(即module2和module3 )相互连接。

因此,您应该像这样更新您的module2代码

代码语言:javascript
复制
private int socket_port = 16669;
    private String server = "module3";

    public TextOutputSocket() {

    }
...

请注意,您不需要进行像- '16667:16667'或- '16669:16669'这样的端口映射,就可以让这两个模块相互通信。

票数 0
EN

Stack Overflow用户

发布于 2020-03-18 10:49:05

首先,您需要了解docker容器是如何工作的。每个应用程序都部署在两个独立的容器中。因此,当尝试连接到不同的容器时,您需要提供该特定容器的ip或主机名。

这里您已经尝试连接到localhost的1669,而您应该做的是尝试连接到另一个容器。这可以通过设置module3容器的容器名称来完成,docker dns将为您解析ip地址。

将127.0.0.1简单替换为module3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60732720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档