如何解決docker宿主機(jī)無(wú)法訪(fǎng)問(wèn)容器中的服務(wù)?
問(wèn)題描述
1、在容器中訪(fǎng)問(wèn)容器中的服務(wù)有響應(yīng),在宿主機(jī)訪(fǎng)問(wèn)容器服務(wù)無(wú)響應(yīng),但是宿主機(jī)可以訪(fǎng)問(wèn)到容器nginx服務(wù)的歡迎界面,截圖如下:
在容器中訪(fǎng)問(wèn)容器中的服務(wù)有響應(yīng):
curl 172.17.0.2:8080

在宿主機(jī)訪(fǎng)問(wèn)容器中的服務(wù)無(wú)響應(yīng):
curl 172.17.0.2:8080
不加端口直接訪(fǎng)問(wèn),會(huì)得到nginx服務(wù)的歡迎界面代碼:
curl 172.17.0.2

2、由于容器里可以訪(fǎng)問(wèn)該服務(wù),所以服務(wù)是啟動(dòng)了的;在宿主機(jī)可以訪(fǎng)問(wèn)容器中的nginx歡迎界面,說(shuō)明宿主機(jī)可以訪(fǎng)問(wèn)容器中80端口的服務(wù),問(wèn)題到底出在什么地方呢?
問(wèn)題解答
回答1:每個(gè)鏡像都定義了可對(duì)外提供的接口,Nginx鏡像只默認(rèn)提供了80和443端口,你自然無(wú)法訪(fǎng)問(wèn)到容器內(nèi)的8080端口。
只需要在docker create或者docker run創(chuàng)建容器時(shí)攜帶--expose參數(shù),就能把指定的端口開(kāi)放出來(lái)。
--expose Expose a port or a range of ports
回答2:你需要將制定的端口暴露到宿主機(jī)上docker run -p 8080:80 你的鏡像名稱(chēng)
相關(guān)文章:
1. javascript - QQ第三方登錄的問(wèn)題2. java - 如何點(diǎn)擊按鈕,重新運(yùn)行(我是初學(xué)者)?3. node.js - express框架,設(shè)置瀏覽器從緩存中讀取靜態(tài)文件,只有js從緩存中讀取了,css還有一些圖片為何沒(méi)有從緩存中讀取?4. java - web端百度網(wǎng)盤(pán)的一個(gè)操作為什么要分兩次請(qǐng)求服務(wù)器, 有什么好處嗎5. Angular.js 無(wú)法設(shè)置Authorization頭,該怎么解決?6. vue.js - vue-router開(kāi)啟HTML5的history模式后nginx配置7. android - RxJava的使用問(wèn)題。8. javascript - 請(qǐng)指條明路,angular的$event,在select中卻是undefined?9. java - Spring boot 讀取 放在 jar 包外的,log4j 配置文件,系統(tǒng)有創(chuàng)建日志文件,不寫(xiě)入日志信息。10. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?

網(wǎng)公網(wǎng)安備