This commit is contained in:
philipz 2014-11-20 14:07:35 +08:00
parent 6f4669c26c
commit 4e1f82eee6

View File

@ -1,12 +1,12 @@
# 高級網路配置 # 高級網路配置
本章將介紹 Docker 的一些高級網路配置和選項。 本章將介紹 Docker 的一些高級網路配置和選項。
當 Docker 啟動時,會自動在主機上創建一個 `docker0` 虛擬橋,實際上是 Linux 的一個 bridge可以理解為一個軟件交換機。它會在掛載到它的網口之間進行轉發。 當 Docker 啟動時,會自動在主機上創建一個 `docker0` 虛擬橋接器,實際上是 Linux 的一個 bridge可以理解為一個軟體交換機。它會在掛載到它的網卡之間進行轉發。
同時Docker 隨機分配一個本地未占用的私有網段(在 [RFC1918](http://tools.ietf.org/html/rfc1918) 中定義)中的一個地址給 `docker0` 接口。比如典型的 `172.17.42.1`掩碼為 `255.255.0.0`。此後啟動的容器內的網口也會自動分配一個同一網段(`172.17.0.0/16`)的地址。 同時Docker 隨機分配一個本地未占用的私有網段(在 [RFC1918](http://tools.ietf.org/html/rfc1918) 中定義)中的一個地址給 `docker0` 接口。比如典型的 `172.17.42.1`網路遮罩為 `255.255.0.0`。此後啟動的容器內的網卡也會自動分配一個同一網段(`172.17.0.0/16`)的網址。
當創建一個 Docker 容器的時候,同時會創建了一對 `veth pair` 接口(當數據包發送到一個接口時,另外一個接口也可以收到相同的數據包)。這對接口一端在容器內,即 `eth0`;另一端在本地並被掛載到 `docker0` 網橋,名稱以 `veth` 開頭(例如 `vethAQI2QT`。通過這種方式主機可以跟容器通信容器之間也可以相互通信。Docker 就創建了在主機和所有容器之間一個虛擬共享網路。 當創建一個 Docker 容器的時候,同時會創建了一對 `veth pair` 接口(當數據包發送到一個接口時,另外一個接口也可以收到相同的數據包)。這對接口一端在容器內,即 `eth0`;另一端在本地並被掛載到 `docker0` 網橋,名稱以 `veth` 開頭(例如 `vethAQI2QT`。通過這種方式主機可以跟容器通信容器之間也可以相互通信。Docker 就創建了在主機和所有容器之間一個虛擬共享網路。
![Docker 網路](../_images/network.png) ![Docker 網路](../_images/network.png)
接下來的部分將介紹在一些場景中Docker 所有的網路定制配置。以及通過 Linux 命令來調整、補充、甚至替換 Docker 默認的網路配置。 接下來的部分將介紹在一些場景中Docker 所有的網路自訂配置。以及通過 Linux 命令來調整、補充、甚至替換 Docker 預設的網路配置。