文章目錄
如何從 Winows docker host 透過 linux container ip 使用服務
前幾天為了重現前幾天在 production 環境遇到的 issue,嘗試在 Windows Server 2016 透過 docker for windows 建立 linux 版 redis,因為需要模擬 sentinel failover 所以需要先測試看看 redis 各個 instance 是否有正確建立,想不到從 host 上連線就失敗了XD
這應該是滿常見的需求:開發階段從本機測試服務是否正常運作,就來看看該如何設定吧
重現問題
host 無法存取 container ip
取得 container ip
docker inspect container_name_or_container_id | findstr '"IPAddress"'
無法存取 container ip
透過 host ip 正常
透過 localhost 也正常
如何解決
手動加上一筆 route 讓 host 可以 access 至 container ip
確認 container 使用的 router ip
新版的 MobyLinuxVM 已經看不到 IP 了
加上 route 紀錄
route /P add 172.0.0.0 MASK 255.0.0.0 10.0.75.2
檢查是否有加入成功
route print
已可正常存取 container ip 服務
如果依上述操作仍無法存取 container 服務,請重啟 docker service 即可
心得
Windows 上的 docker 雖然已成熟許多,但仍有許多改善的空間,使用起來還是有很多眉眉角角需要了解,但我相信依微軟過去風格,應該要不了多少,就會改良至無腦使用的階段,到時相信使用門檻會大幅降低的,不然依目前使用經驗,會用的人都需要不少軟硬體相關知識才有辦法解決遭遇到的狀況,實在不親民呀
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。