veth pair
)。docker run
的時候透過 --net
參數來指定容器的網路設定,有4個可選值:--net=bridge
這個是預設值,連接到預設的橋接器。--net=host
告訴 Docker 不要將容器網路放到隔離的命名空間中,即不要容器化容器內的網路。此時容器使用本地主機的網路,它擁有完全的本地主機界面存取權限。容器程式可以跟主機其它 root 程式一樣可以打開低範圍的連接埠,可以存取本地網路服務比如 D-bus,還可以讓容器做一些影響整個主機系統的事情,比如重啟主機。因此使用這個選項的時候要非常小心。如果進一步的使用 --privileged=true
,容器會被允許直接設定主機的網路堆棧。--net=container:NAME_or_ID
讓 Docker 將新建容器的程式放到一個已存在容器的網路堆疊中,新容器程式有自己的檔案系統、程式列表和資源限制,但會和已存在的容器共享 IP 位址和連接埠等網路資源,兩者程式可以直接透過 lo
迴路界面通信。--net=none
讓 Docker 將新容器放到隔離的網路堆疊中,但是不進行網路設定。之後,使用者可以自己進行設定。--net=none
後,可以自行設定網路,讓容器達到跟平常一樣具有存取網路的權限。透過這個過程,可以了解 Docker 設定網路的細節。/bin/bash
容器,指定 --net=none
參數。docker0
,並啟用它docker0
卸載。ip netns exec
命令來在指定網路命名空間中進行設定,從而設定容器內的網路。