iT邦幫忙

0

請教使用Docker架設Grafana連線本機MS SQL SERVER 問題

  • 分享至 

  • xImage

請教大家

目前本機環境是 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方面的問題

望空 iT邦新手 1 級 ‧ 2023-03-31 15:20:38 檢舉
先確定container的IP可以Ping到你的本機IP,能否telnet到SQL Server的Port,然後確認本機防火牆是否有開放...
WUcheap iT邦研究生 4 級 ‧ 2023-03-31 16:09:20 檢舉
請教,如果ping不到本機IP,應該是屬於網路設置相關問題
之前也有翻找相關問題,我的配置沒特別設定,所以應該是bridge模式,在來就失去問題方向了
還有疑惑點,WEB run在Docker Container內也沒特別設定,卻能用JDBC呼叫到SQL SERVER這也是我覺得矛盾卡關的地方
望空 iT邦新手 1 級 ‧ 2023-03-31 17:22:36 檢舉
如果container IP跟sqlserver都在同網段的話就很詭異了...如果不是本機防火牆限制或是SQLServer設定問題的話
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Ray
iT邦大神 1 級 ‧ 2023-04-01 11:28:03
最佳解答

關鍵在這句話:

建立datasources時,要連線SQL SERVER

請問, 你在 Grafana 裡面, Datasource 是用甚麼方式識別 SQL Server?

  1. 127.0.0.1?
  2. SQL Server Name?
  3. SQL 綁定的 Host IP?

以上三者, 只有 3. 可以讓 Container 連上 Host 裡的 SQL Server.

其次, 除了 3. 之外, 你的 SQL Server 還要開啟 TCP 連線 (通常預設安裝只會開 Pipe 連線)

看更多先前的回應...收起先前的回應...
WUcheap iT邦研究生 4 級 ‧ 2023-04-06 10:46:46 檢舉

您好,我是使用 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卻是不通的

請教可以往哪個方向再尋找,謝謝

Ray iT邦大神 1 級 ‧ 2023-04-06 11:49:57 檢舉

那台跑 SQL 的 Windows, 防火牆沒有允許 Docker IP 連入.
所以你不只 Port 49172 不通, 連 ICMP 協定都 ping 不通.

WUcheap iT邦研究生 4 級 ‧ 2023-04-06 12:01:48 檢舉

您好,查了一下,我本機防火牆(SQL也安裝在本機)是有允許 Docker Desktop Backend通過的

而且在使用Docker Grafana前,我有將自己開發的Java Web製作成Docker image並成功run Container且連線本機SQLSERVER正常,所以一開始才將問題方向朝Docker網路設定方向想(另一方面CLI也PING不到本機IP)

Ray iT邦大神 1 級 ‧ 2023-04-06 12:14:17 檢舉

先隨便跑一個 Alpine Container, 看看他的 ping 是否成功?
可以的話, 用 nc 連一下 port 49172?

若以上都可以, 那就是 Grafana container 問題, 要去找他當初 Build 的 Dockerfile 內容來看才知道.

WUcheap iT邦研究生 4 級 ‧ 2023-04-07 11:03:17 檢舉

抱歉,對於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 是不通的

WUcheap iT邦研究生 4 級 ‧ 2023-04-07 14:04:23 檢舉

感謝兩位大大,讓我重新審視了一下基本架構

做了兩個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一定正確的認知導致誤判.....)

我要發表回答

立即登入回答