1. 程式人生 > >docker網路架構、路由

docker網路架構、路由

這裡寫圖片描述
如上圖:我啟動了兩個docker容器,docker1和docker2,這兩個容器用的是同一個映象(nginx映象),兩個分別將nginx的80埠對映到9090和9091埠,啟動後可在Windows上正常訪問nginx服務。今天寫這個主要是記錄一下該網路架構中的路由轉發情況。
這裡寫圖片描述
從這個圖中可以看出,很明顯最後兩條規則是針對“由外訪問docker內部的轉發規則”
黃色那兩條是“從內往外訪問規則”,但是很明顯的是,對內部的兩個地址偽裝了。至於偽裝為什麼了,可以通過tcpdump來抓包瞅瞅。

以docker1為例,首先進入docker1裡,之後,ping閘道器192.168.245.1,接著分別抓取docker1的veth*和host的eth0的流量包,如下:
這裡寫圖片描述


可以發現,這個地址是被偽裝為了192.168.245.222
而兩個docker之間的溝通直接通過docker0轉發即可,不需要偽裝。