windows和linux下的docker運行時的網絡結構是有區別的
a.windows下,默認使用Hyper-v創建一個linux虛擬機,承載docker。所以從外向內的路徑為:
windows -> linux系統的docker(hyper-v中) -> docker內的容器(應用)
其中docker desktop會默認創建一個網絡DockerNAT,windows宿主分配IP:10.0.75.1
linux虛擬機會分配IP:10.0.75.2,並且還另外會分配內部網段IP:172.17.0.1
然后docker內的容器會默認分配172.17.0.0網段IP,例如:
可以看到網絡路徑為
10.0.75.1(windows) -> 10.0.75.2 / 172.17.0.1 (docker的linux虛擬機) -> 172.17.0.x(docker的內部容器)
所以這里需要注意:在容器內去訪問windows宿主需要使用10.0.75.1。使用172.17.0.1訪問的是linux虛擬機。
b.linux下,不需要另外創建虛擬機了。從外向內路徑為:
linux -> docker內部容器(應用)
所以網絡路徑也變為更簡單了
172.17.0.1(linux系統) -> docker內部容器(應用)
所以訪問linux宿主直接用172.17.0.1就夠了