Docker 服務默認會創建一個 docker0 網橋(其上有一個 docker0 內部接口),它在內核層連通了其他的物理或虛擬網卡,這就將所有容器和本地主機都放到同一個物理網絡。
Docker 默認指定了 docker0 接口 的 IP 地址和子網掩碼,讓主機和容器之間可以通過網橋相互通信,它還給出了MTU(接口允許接收的最大傳輸單元),通常是 1500 Bytes,或宿主主機網絡路由上支持的默認值。這些值都可以在服務啟動的時候進行配置。
--bip=CIDR — IP 地址加掩碼格式,例如 192.168.1.5/24
--mtu=BYTES — 覆蓋默認的 Docker mtu 配置
也可以在配置文件中配置 DOCKER_OPTS,然后重啟服務。 由于目前 Docker 網橋是 Linux 網橋,用戶可以使用brctl show 來查看網橋和端口連接信息。
每次創建一個新容器的時候,Docker 從可用的地址段中選擇一個空閑的 IP 地址分配給容器的 eth0 端口。使用本地主機上 docker0 接口的 IP 作為所有容器的默認網關。
自定義網橋
除了默認的 docker0 網橋,用戶也可以指定網橋來連接各個容器。
在啟動 Docker 服務的時候,使用 -b BRIDGE或--bridge=BRIDGE 來指定使用的網橋。
如果服務已經運行,那需要先停止服務,并刪除舊的網橋。
$ sudo brctl addbr bridge0
$ sudo ip addr add 192.168.5.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
然后創建一個網橋 bridge0。
$ sudo brctl addbr bridge0
$ sudo ip addr add 192.168.5.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
查看確認網橋創建并啟動。
$ ip addr show bridge0
配置 Docker 服務,默認橋接到創建的網橋上。
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
$ sudo service docker start
啟動 Docker 服務。 新建一個容器,可以看到它已經橋接到了 bridge0 上。
可以繼續用 brctl show 命令查看橋接的信息。另外,在容器中可以使用 ip addr 和 ip route 命令來查看 IP 地址配置和路由信息。








