antony@notes:~/container$ cat "Docker-原生橋接網路架構圖.md"
Docker 原生橋接網路架構圖
Docker 原生橋接網路架構圖

- 在同一台電腦裡面,eth0與bridge這兩個網路設備要互通有無,必須要把ip_forword這個功能啟動。
- Docker Container就是一個process,可以產生network namespace,裡面可以放一片網路卡進去,Docker0(bridge)他也是一個程式,他自己也有自己的network namespace,也可以放一片網路卡進去。
- 問: 甚麼叫做Docker的原生橋接器?
- 答: Docker負責做出一個虛擬橋接器網路,他會跟電腦的實際網卡互通有無、愛在一塊。代表橋接器可以把封包和資料,透過eth0傳到外網去。虛擬橋接器不但會找出口(eth0),還會跟內部的container也愛在一塊,這些結構是由network namespace做出來的,每個container連到bridge,就會構成網路,事實上可以把bridge想像成橋、交換器、switch。
- host 為 dokcer host ,就是我們現在開的虛擬機
alp, 用來產生 container 的 - docker0 (bridge) 為虛擬橋接器 (在電腦內部的 switch,使用
brctl指令模擬出 ) ,需要在 host 的系統上開啟 ipv4.ip_forward 才能使用封包轉送功能- 可使用
sysctl -a 2>/dev/null| grep 'ipv4.ip_forward '確認 host 的設定
- 可使用
- eth0 <-> veth :也就是之前教的 ifconfig 設定出的 peer (對接)網卡
$ sudo iptables -t nat -L | grep 172.17
MASQUERADE all -- 172.17.0.0/16 anywhere
MASQUERADE意思是偽裝
bigred@alp:~$ docker exec -it w1 sh
/ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0route -n 、 cat /etc/resolv.conf 、 ifconfig 很重要!!!
$ docker run --rm --name n1 -p 8080:80 -d quay.io/cloudwalker/nginx
-p 8080:80: 在Docker host這台機器開一個port: 8080,自己的container的port: 80。- 為何是80?
- 因為啟動了nginx,nginx是一個網站,他的port一定是80。