從我的碼頭集裝箱我想訪問我的主機上運行的MySQL服務器127.0.0.1。我想從主機訪問在我的容器容器上運行的Web服務器。我嘗試這樣做:碼頭:容器和主機端口的相互訪問
docker run -it --expose 8000 --expose 8001 --net='host' -P f29963c3b74f
但沒有端口顯示爲暴露:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
093695f9bc58 f29963c3b74f "/bin/sh -c '/root/br" 4 minutes ago Up 4 minutes elated_volhard
$
$ docker port 093695f9bc58
如果我沒有做--net='host'
,端口都暴露出來,我可以在訪問Web服務器容器。
主機和容器如何互相訪問其他端口?
我正在測試的東西,所以我很確定docker使用主機上的一個隨機端口。從程序員的帖子看來,當使用''--net = host'''時,你不能公開/映射端口。 – user2233706
@ user2233706當然,使用'--net = host'時不能暴露端口(這沒有意義 - 這就是爲什麼你在「端口」列沒有任何內容)。當你不'發佈'端口你的主機如何知道暴露端口例如。 '8000-> XXXX'?主機上的端口應該用'docker0'接口(分別爲'IP')訪問。 – VladoDemcak