Docker網路規則

2022-07-12 01:12:11 字數 1245 閱讀 4917

bridge網路模式下的容器通訊原理

容器也可以與外部通訊,我們看一下主機上的iptable規則,每建立乙個容器,都會有相應的nat規則:

-a postrouting -s 172.17.0.0/16 ! -o docker0 -j masquerade
masquerade: 在這裡表示的意思是偽裝
規則說明:

這條規則會將源位址為172.17.0.0/16的包(即容器產生的資料報),並且不是從docker0網絡卡發出的,進行源位址轉換,轉換成主機網絡卡的位址。

eg :

假設主機有一塊網絡卡為eth0,ip位址為192.168.1.10/24,閘道器為192.168.1.1。從主機上乙個ip為172.17.0.1/16的容器中ping京東(120.52.148.118),ip包首先從容器發往自己的預設閘道器docker0,包到達docker0後,也就到達了主機上,

然後會查詢主機的路由表,發現包應該從主機的eth0發往主機的閘道器192.168.1.1/24,接著包會**給eth0,並從eth0發出去(主機的ip_forward**應該已經開啟),這時候,上面的iptable規則就會起作用,對包做snat轉換,將源位址換為eth0的位址。

這樣,在外界看來,這個包就是從192.168.1.10上發出來的,docker容器對外是不可見的

外面網路也可以訪問容器內的服務,需要一些規則控制

//建立一簡單的web容器:

docker run -d --name web -p 80:80 nginx

//iptables會多一條dnat規則:

-a docker ! -i docker0 -p tcp -m tcp --dport 80 -j dnat --to-destination 172.17.0.4:80

規則說明:

新增加的規則意思是對主機eth0收到的目的埠為 80 的tcp流量進行dnat轉換,將流量發往172.17.0.4:80,即所建立的容器80埠,外界只需訪問192.168.1.10:80就可以訪問到容器中的服務

Docker 初識Docker網路

我們每啟動乙個docker容器,docker就會給docker容器分配乙個ip,我們只要安裝了docker,就會有乙個網絡卡docker0。一 啟動兩個tomcat容器 root localhost docker run d p name tomcat01 tomcat 啟動映象,生成tomcat0...

規則網路與隨機網路

我們把一維鏈,二維正方晶格等稱為規則網路。規則網路是指平移對稱性晶格,任何乙個格點的近鄰數目都相同。當然這只是乙個習慣用法,不是下定義,比如carley tree顯然不是隨機網路,但是也沒有規定說它屬於規則網路。隨機網路是另乙個極端,由n個頂點構成的圖中,可以存在c2n條邊,我們從中隨機連線m條邊所...

docker基礎 docker網路模式

docker啟動之後,會在宿主機虛擬乙個docker容器網橋 docker0 docker啟動乙個容器時會根據docker網橋的網段分配給容器乙個ip位址,稱為container ip,其實,總共有5種,常用的是以下4種 docker網路模式 配置 說明 host模式 net host 容器和宿主機...