嗨,我正在嘗試在帶有 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.yml
version: "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
uj5u.com熱心網友回復:
它不適合您的原因可能有很多。其中有:
- 主機網路驅動程式僅適用于 Linux 主機,因此如果您使用 Docker for Mac、Docker for Windows 或 Docker Enterprise Edition,它將無法正常作業。
- 該埠
2345可能已在您的計算機上使用,并且該delve行程可能無法系結它。 - 連接到會話時,您可能使用了錯誤的主機名(您的代碼段顯示
127.0.0.1但它已被注釋掉,而且我不知道在未提供 IP 時它選擇了什么 IP)。
但是,我不確定您為什么要嘗試使用主機網路模式,因為它通常對兩個主要用例很有用:當 docker 容器需要系結大量埠(數百或數千個埠),并且在運行 Docker 群時可以很方便,只要服務在群中沒有沖突的埠。
在我看來,這些案例中的任何一個都與您描述的情況無關,所以即使這不是您最初的問題,我建議您尋找其他解決方案來解決您試圖解決的問題使用主機聯網模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412651.html
標籤:
