在Linux環境下,進行網絡通信時,每個網絡接口(network interface)都有一個唯一的標識名。在大多數情況下,這些標識名是以eth開頭的名字,例如eth0、eth1等等。但是,在使用Docker時,一個新的網絡接口docker0也會出現在系統中。
$ ifconfig -a docker0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:x.x.x.x Bcast:x.x.x.x Mask:255.255.255.0 inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4665648 errors:0 dropped:0 overruns:0 frame:0 TX packets:1794191 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:626157160 (626.1 MB) TX bytes:277279512 (277.2 MB)
從上面的ifconfig命令的輸出中我們可以看出,Docker創建了一個名為docker0的網絡接口。這個網絡接口的作用是將Docker容器中的網卡與物理主機(host)上的網卡連接起來。
eth0是物理主機(host)上的網卡,而docker0只是一個虛擬的橋接(bridge)設備,它將容器中虛擬的網卡與主機的物理網卡進行通信。當Docker容器啟動時,Docker會自動將容器的虛擬網卡連接到這個docker0橋接設備上,從而使得Docker容器可以訪問主機上的網絡資源,同時主機也可以訪問Docker容器的網絡資源。