我一直在嘗試將我的各種設定 docker 容器('Node Red'、MongoDB 和 MySQL)從我的 NAS 與 Linux 發行版(它們運行良好)遷移/復制到我的 Windows 10 機器(使用更強大的硬體)我已經
;TLDR Node Red 流因 mongoDB 和 mySQL 連接錯誤而失敗,如下所示(但我能夠通過資料庫客戶端成功連接到兩者):
MongoDB 節點:
MongoNetworkError:第一次連接時無法連接到服務器 [mongodb:27017] [Error: getaddrinfo ENOTFOUND mongodb at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) { name: 'MongoNetworkError' }]
MySQL 節點:
“資料庫未連接”
使用 mySQL 配置節點輸出:
“錯誤:連接 ECONNREFUSED 127.0.0.1:3306”

配置節點如下所示:
MongoDB:

MySQL:

(用戶“node-red”的權限受限;使用 MySQL 客戶端進行測驗并正確連接到資料庫)
我還在 Windows 防火墻中為入站和出站添加了埠規則
- MongoDB:27017 (tcp)
- MySQL:3306、33060 (tcp)
在運行的 Node-Red 容器中,/etc/hosts 檔案如下所示:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
172.17.0.3 mongoDB be6c7e97f98d
172.17.0.2 MySql bfa9a8206a20
172.17.0.4 cd7134e9ff59
/etc/hosts [只讀]?? 1/10 10%
我的 NAS 上 Node-Red 與 MongoDB 和 MySQL 一起成功運行的 hosts 檔案包含以下內容:
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
172.17.0.2 mySQL MySql_8.0.22 MySql
172.17.0.3 mongoDB mongoDB
172.17.0.4 Node-Red-Custom-N14
/etc/hosts [只讀]?? 1/10 10%
我有一種感覺,它一定是我一直忽略的超級簡單的東西。也許你知道我可以嘗試什么,然后請告訴我。
uj5u.com熱心網友回復:
有幾點對這里有幫助:
127.0.0.1始終指向運行代碼附加到的網路堆疊。- 在正常情況下(除非網路模式不是
host),每個運行的 Docker 容器都有自己的網路堆疊。(容器實際上使用稱為網路命名空間的東西作業)
這意味著,除非你有一個MySQL實體在同一個容器中運行的節點RED配置配置為連接到MySQL節點要么localhost或127.0.0.1將無法連接。
您可能有 2 個選項可以解決此問題。
由于您將暴露的埠從容器映射到主機,因此您可以將所有 IP 地址替換
172.17.0.1為分配給docker0網橋的默認 IP 地址。使用 Docker compose 管理所有容器,因為這將創建 DNS 條目(在內部 Docker DNS 服務中),將每個容器的 IP 地址映射到它的名稱
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/339365.html
