請教大家
目前本機環境是 WIN10 並下載 Docker Desktop
安裝好後由DockerHub下載Grafana Docker image 並run為 Docker Container 有設定Port 3000:3000
此時可進入利用預設帳密登入 http://localhost:3000/login 進入General Home
在同一台電腦有安裝 SQL SERVER 2019 (非Docker環境)並有啟動,且能利用SSMS連線到進行管理
我遇到的問題是在使用Grafana的介面建立datasources時,要連線SQL SERVER卻一直連不通
問題的方向可能是Docker的設定還是其他方向呢? 請各位高手指教,謝謝
因為有開發Web並放在Docker Container內跑,可以連同環境的SQL SERVER
但在用Grafana時卻不順利,所以暫時先沒考慮SQL SERVER的問題,Grafana也用官方的,所以才想是不是Docker方面的問題
關鍵在這句話:
建立datasources時,要連線SQL SERVER
請問, 你在 Grafana 裡面, Datasource 是用甚麼方式識別 SQL Server?
以上三者, 只有 3. 可以讓 Container 連上 Host 裡的 SQL Server.
其次, 除了 3. 之外, 你的 SQL Server 還要開啟 TCP 連線 (通常預設安裝只會開 Pipe 連線)
您好,我是使用 3.SQL綁定的 Host IP的方法去連的
SQL Server有特別去[SQL Server組態管理員]內開啟TCP/IP連線
(假設我是設定 172.20.20.88 port:49172)
有在本機使用SSMS tcp:172.20.20.88,49172 連線成功
有在本機IDE Java使用JDBC Datasource設定IP 連線成功
但在Docker CLI PING 172.20.20.88卻是不通的
請教可以往哪個方向再尋找,謝謝
那台跑 SQL 的 Windows, 防火牆沒有允許 Docker IP 連入.
所以你不只 Port 49172 不通, 連 ICMP 協定都 ping 不通.
您好,查了一下,我本機防火牆(SQL也安裝在本機)是有允許 Docker Desktop Backend通過的
而且在使用Docker Grafana前,我有將自己開發的Java Web製作成Docker image並成功run Container且連線本機SQLSERVER正常,所以一開始才將問題方向朝Docker網路設定方向想(另一方面CLI也PING不到本機IP)
先隨便跑一個 Alpine Container, 看看他的 ping 是否成功?
可以的話, 用 nc 連一下 port 49172?
若以上都可以, 那就是 Grafana container 問題, 要去找他當初 Build 的 Dockerfile 內容來看才知道.
抱歉,對於Docker認識的算是很淺
我是用docker pull alpine 後在run成一個Container,沒有經過任何特殊設定
CLI內ifconfig查看得到 eth0:inet addr:172.17.0.4
但我本機IP是 172.20.20.88
這樣是否合理?
CLI內PING 172.20.20.88 是不通的
感謝兩位大大,讓我重新審視了一下基本架構
做了兩個alpine Container
Container可以互ping
也能ping到我以外伺服器
但無法ping到google
無法ping到本機
根據網友說明普通正常情況可以ping到外網,所以對外應該有防火牆擋著
而本機因為同時開WiFi和有接網路線,但我一直是ping WiFi的IP導致ping不到本機
所以Grafana裡面Datasource改為實體網路IP即可成功連線
(之前Web Container的JDBC可以經WiFi IP連到本機SQL SERVER讓我產生了此IP一定正確的認知導致誤判.....)