簡體   English   中英

docker橋接本地主機端口

[英]docker bridging localhost port

我的本地計算機上的端口50160上運行着一個聊天機器人服務。 該端口用於接收來自docker容器中我的nodejs-service的消息。 要將消息發送到聊天服務,Docker容器必須打開端口8080 這很好。

我使用docker run -p 8080:8080 registry.gitlab.com/abc/def/adapter-xyz啟動它。

但是將響應從docker容器發送到chatbot會在docker容器中返回以下錯誤:

ChatConnector: message received.
Error: connect ECONNREFUSED 127.0.0.1:50160
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14)

似乎它無法將響應發送回chatbot(在我的計算機上運行)。 任何想法?

您應該使用主機的IP地址而不是127.0.0.1。 通過執行以下命令可以輕松提取地址:

docker network inspect -f '{{ range .IPAM.Config }}{{.Gateway}}{{end}}' bridge

我在評論中讀到您不能更改該地址(順便說一句,硬編碼永遠不是一個好主意)。 另一種解決方案是在容器本身中添加iptables規則,以將入站流量重定向到端口50160到主機。 我不太喜歡這個主意,因為它很笨拙,但是應該可以用。

docker run --network=host 

可以將容器的網絡設置為主機,因此您可以從容器訪問127.0.0.1。 但這在osx上不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM