【问题标题】:Windows client can't communicate with server running in linux docker containerWindows 客户端无法与在 linux docker 容器中运行的服务器通信
【发布时间】:2020-09-23 07:43:58
【问题描述】:

我正在寻找一些有关 Windows 主机和 linux 容器之间基本 docker 网络的帮助。

作为一名 docker 新手,我希望在主机上运行的自定义 python 客户端能够与在 dev docker 容器中运行的自定义 python tcp 服务器通信。

在 windows 10 主机上独占运行时,客户端和服务器可以成功连接和通信。在 linux 容器上独占运行时,客户端和服务器可以成功连接和通信。当我尝试让 windows 10 主机服务器上的客户端与容器中的 linux 服务器进行通信时,就会出现问题。客户端能够连接到暴露的端口,但它似乎没有与服务器通信。当客户端连接到暴露的端口时,容器化服务器上​​的日志没有显示任何连接。

我的 docker 设置相当基本:

Dockerfile:

FROM python:3.8 AS base
RUN cp -f /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
COPY requirements.txt /tmp
RUN pip install -r /tmp/requirements.txt
EXPOSE 8888
CMD [ "python", "/opt/sog/server.py" ]

docker-compose.yml:

version: "3.8"

services:
  sog:
    image: sog
    ports:
      - 8888:8888
    volumes:
      - ./sog/:/opt/sog

我尝试了各种测试来调试,例如:

  1. 在 windows 主机上本地运行客户端和服务器

    • 连接和通信
  2. 在linux容器中运行客户端和服务器

    • 连接和通信
  3. 在 windows 上运行客户端,在容器中运行服务器,使用 127.0.0.1:8888

    • 客户端连接到端口,但无法通信
  4. 在windows上运行客户端,在容器中运行服务器,使用docker IP:8888

    • 客户端无法连接到端口
  5. Test-NetConnection -ComputerName 127.0.0.1 -Port 8888

    • 成功
  6. Test-NetConnection -ComputerName 127.0.0.1 -Port 8889

    • 按预期失败(不同端口 - 测试测试)
  7. 远程登录 127.0.0.1 8888

    • 似乎已连接,但没有返回或记录任何有用的信息。立即退出。
  8. 远程登录 127.0.0.1 8889

    • 按预期连接失败(不同的端口 - 测试测试)
  9. 根据一些网络搜索,我还尝试将 docker compose 中的端口设置为0.0.0.0:8888:8888

    • 客户端连接到端口,但无法通信
  10. 我也尝试过暂时关闭我的防病毒软件,以防它阻止通信

    • 客户端连接到端口,但无法通信
  11. 我认为 docker 容器中可能正在运行防火墙,但我没有看到任何安装 iptables 的证据

鉴于客户端/服务器应用程序似乎可以在两种环境中运行,我想我可以排除我的 python 代码是罪魁祸首。这让我觉得我的 docker 设置丢失了一些东西,有些东西阻止了连接,或者我的 windows 到 linux 的网络连接存在固有的问题。

非常感谢任何有关如何进一步调试此问题的解决方案或提示。

【问题讨论】:

  • 你确定你有python服务器监听所有接口吗?也就是你绑定到0.0.0.0了吗?
  • 宾果游戏! python 服务器正在监听 127.0.0.1。当我将其更改为 0.0.0.0 时,一切都按预期工作。不需要对 Dockerfile 或 docker-compose.yml 进行任何更改。谢谢,卡尔。

标签: python linux docker windows-10 docker-networking


【解决方案1】:

根据Karl 的评论,python 服务器需要绑定到 0.0.0.0 而不是 127.0.0.1。不需要对 Dockerfile 或 docker-compose.yml 进行任何更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多