为了账号安全,请及时绑定邮箱和手机立即绑定

go delve 远程调试不适用于 docker "network_mode: host"

go delve 远程调试不适用于 docker "network_mode: host"

Go
PIPIONE 2022-10-24 15:27:16
我正在尝试在带有 VSCode 的 docker 容器中使用 dlv 运行远程调试。当我指定 docker-compose 标志network_mode: host而不是特定端口时,问题就开始了(由于使用 MQTT,这是必需的)。这会导致 VSCode 抛出以下错误:“无法继续:“错误:连接 ENCONNREFUSED ...””.vscode/launch.json{"version": "0.2.0","configurations": [    {        "name": "Remote Docker",        "type": "go",        "request": "attach",        "mode": "remote",        "remotePath":"/go/src/work/cmd/mapper",        "port": 2345,        // "host": "127.0.0.1",        "cwd": "${workspaceFolder}/src/cmd/mapper",        "args": [],        "trace" : "verbose",        "env" : {}    },]}码头工人-compose.ymlversion: "3.4"services:  golang:    container_name: golang    image: gotestdlv:latest    privileged: true    volumes:      - ./src/:/go/src/work/    network_mode: host    # ports:      # - 2345:2345 # debug port
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

它不适合您的原因可能有很多。其中有:

  • 主机网络驱动程序仅适用于 Linux 主机,因此如果您使用 Docker for Mac、Docker for Windows 或 Docker Enterprise Edition,它将无法正常工作。

  • 该端口2345可能已在您的计算机上使用,并且该delve进程可能无法绑定它。

  • 连接到会话时,您可能使用了错误的主机名(您的代码段显示127.0.0.1但它已被注释掉,而且我不知道在未提供 IP 时它选择了什么 IP)。

但是,我不确定您为什么要尝试使用主机网络模式,因为它通常对两个主要用例很有用:当 docker 容器需要绑定大量端口(数百个或数千个端口),并且在运行 Docker 群时可以很方便,只要服务在群中没有冲突的端口。

在我看来,这些案例中的任何一个都与您描述的情况无关,所以即使这不是您最初的问题,我建议您寻找其他解决方案来解决您试图解决的问题使用主机联网模式。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信