如何解決docker宿主機(jī)無法訪問容器中的服務(wù)?
問題描述
1、在容器中訪問容器中的服務(wù)有響應(yīng),在宿主機(jī)訪問容器服務(wù)無響應(yīng),但是宿主機(jī)可以訪問到容器nginx服務(wù)的歡迎界面,截圖如下:
在容器中訪問容器中的服務(wù)有響應(yīng):
curl 172.17.0.2:8080
在宿主機(jī)訪問容器中的服務(wù)無響應(yīng):
curl 172.17.0.2:8080
不加端口直接訪問,會(huì)得到nginx服務(wù)的歡迎界面代碼:
curl 172.17.0.2
2、由于容器里可以訪問該服務(wù),所以服務(wù)是啟動(dòng)了的;在宿主機(jī)可以訪問容器中的nginx歡迎界面,說明宿主機(jī)可以訪問容器中80端口的服務(wù),問題到底出在什么地方呢?
問題解答
回答1:每個(gè)鏡像都定義了可對(duì)外提供的接口,Nginx鏡像只默認(rèn)提供了80和443端口,你自然無法訪問到容器內(nèi)的8080端口。
只需要在docker create或者docker run創(chuàng)建容器時(shí)攜帶--expose參數(shù),就能把指定的端口開放出來。
--expose Expose a port or a range of ports
回答2:你需要將制定的端口暴露到宿主機(jī)上docker run -p 8080:80 你的鏡像名稱
相關(guān)文章:
1. javascript - 自執(zhí)行函數(shù)是當(dāng)加載到這個(gè)js就執(zhí)行函數(shù)了嗎2. 學(xué)html時(shí),點(diǎn)“運(yùn)行實(shí)例”點(diǎn)“提交”,右邊的白框框沒任何反應(yīng)。3. javascript - react,獲取radio的值出錯(cuò)4. javascript - 怎么實(shí)現(xiàn)讓 div 里面的 img 元素 中心居中, 如下示例圖5. javascript - vue 父子組件傳遞數(shù)據(jù)6. javascript - js的shift()方法失效?7. docker不顯示端口映射呢?8. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問題 麻煩幫我看一下9. javascript - IOS微信audio標(biāo)簽不能通過touchend播放10. javascript - 微信小程序 如何實(shí)現(xiàn)這種左滑動(dòng)出現(xiàn)刪除的辦法?有相關(guān)api嗎?
