You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spyder中连接Docker容器 远程内核连接失败排查

Spyder 容器远程开发问题答复

Spyder是否支持类VS Code Remote的远程开发功能

支持。Spyder的远程开发模式为本地运行Spyder IDE端,通过SSH协议连接运行在远程主机/容器内的spyder-kernels内核,代码执行、依赖调用、计算资源全部使用远端/容器侧环境,和VS Code Remote连接容器的开发体验一致,不需要在容器内安装完整的Spyder图形界面。

连接失败的核心原因

你当前配置一直卡在连接中,共有3个明确问题:

  • 复制到本地的内核配置文件中ip字段值为127.0.0.1,该地址是容器内部的回环地址,仅容器内进程可访问,本地机器的Spyder无法直接路由到这个地址对应的内核服务
  • 启动容器时仅映射了22端口到宿主机2022,内核运行用到的5个随机端口(shell、iopub、stdin、control、hb端口)既没有在启动容器时做端口映射,也没有配置可达路由,本地无法直接访问这些端口
  • 启动spyder-kernels时默认绑定容器内的回环网卡,就算手动映射端口,容器外发起的连接请求也会被内核直接拒绝

可直接复现的正确配置流程

你不需要修改现有Dockerfile,按以下步骤操作即可正常连接:

  1. 启动容器,保持22端口映射即可,不需要额外映射内核端口:
    docker run -d -p 2022:22 sshubuntu
    
  2. SSH登录进容器,启动spyder-kernels时绑定所有网卡地址,同时指定固定端口避免每次随机生成端口增加配置成本:
    # SSH登录容器
    ssh -i key sshuser@localhost -p 2022
    # 启动内核,绑定0.0.0.0,指定5个固定端口
    python3 -m spyder_kernels.console --ip=0.0.0.0 --shell=50001 --iopub=50002 --stdin=50003 --control=50004 --hb=50005
    
    启动后记录输出中显示的内核连接key值,以及配置文件生成路径。
  3. 本地新建PowerShell窗口,建立SSH端口转发隧道,将本地端口和容器内的内核端口一一映射,执行后不要关闭该窗口:
    ssh -i key -L 50001:127.0.0.1:50001 -L 50002:127.0.0.1:50002 -L 50003:127.0.0.1:50003 -L 50004:127.0.0.1:50004 -L 50005:127.0.0.1:50005 sshuser@localhost -p 2022 -N
    
  4. 修改本地保存的内核json配置文件,替换端口、key为你实际使用的值:
    {
      "shell_port": 50001,
      "iopub_port": 50002,
      "stdin_port": 50003,
      "control_port": 50004,
      "hb_port": 50005,
      "ip": "127.0.0.1",
      "key": "替换为你上一步记录的内核key",
      "transport": "tcp",
      "signature_scheme": "hmac-sha256",
      "kernel_name": ""
    }
    
  5. 打开Spyder,选择「连接到现有内核」选项,加载修改好的本地json配置文件即可完成连接,后续所有代码运行都会在Docker容器内执行。

更简便的操作方式:不需要手动复制内核配置、手动建立端口转发,直接在Spyder的远程内核连接配置页填写SSH连接信息(地址填localhost、端口填2022、用户名填sshuser、私钥路径选择本地的key文件),Spyder会自动建立SSH隧道、自动拉取容器内的内核配置完成连接,是官方推荐的标准远程连接方式。


内容的提问来源于stack exchange,提问作者Jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:24:15