首先,啟動乙個ubuntu容器指定–net=none引數:
在本地查詢容器的程序id,並為它建立網路命名空間:$ docker run -i -t --rm --net=none sshd:latest /bin/bash
root@2f63edb0144a:/#
檢查橋接網絡卡的ip和子網掩碼資訊:$ docker inspect -f '}' 2f63edb0144a
44393
$ pid=44393
$ sudo
mkdir -p /var/run/netns
$ sudo
ln -s /proc/$pid/ns/net /var/run/netns/$pid
建立一對「veth pair」介面a和b,繫結a介面到網橋docker0,並啟用它:[root@c7-45 ~]
# ip addr show docker0
5: docker0: mtu 1500 qdisc noqueue state
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
將b介面放到容器的網路命名空間,命名為eht0,啟動它並配置乙個可用的ip(橋接網段)和預設閘道器:$ ip link add a type veth peer name b
$ brctl addif docker0 a
$ ip link
set a up
以上就是docker配置網路的具體過程:$ ip link
set b netns $pid
$ ip netns exec
$pid ip link
set dev b name eth0
$ ip netns exec
$pid ip link
set eth0 up
$ ip netns exec
$pid ip addr add 172.17.0.99/16 dev eth0
$ ip netns exec
$pid ip route add default via 172.17.0.1
當容器終止後,docker會清空容器,容器內的網路會隨網路命名空間一起被清除,a介面也會被自動從docker0解除安裝並清除。此外,在刪除/var/run/netns/下的內容之前,使用者可以使用ip netns exec 命令在指定網路空間進行配置,從而更新容器內的網路配置。
Docker 容器網路
所有容器建立時,預設都掛在docker0上,可以在宿主機上使用ifconfig檢視docker0網橋裝置。docker0是乙個linux bridge。docker0網路建立時預設配置了subnet 172.17.0.0 16 建立bridge docker network create drive...
Docker容器網路
docker容器的網路驅動有很多種方式,當安裝docker engine後,docker會在每乙個engine上面生成乙個3種網路,通過命令可以看到是bridge,host和none,而docker官方推薦使用者使用自己的自定義網路,所以在使用容器的時候最好使用自定義的網路,預設docker使用自帶...
容器網路(一)docker容器網路驅動
一 linux網橋和veth pair 1 linux網橋,虛擬的交換機,工作在資料鏈路層,通過學習到mac位址,將資料報 到網橋的不同埠上。2 veth pair,可以理解為一根虛擬的網線,建立veth pair後,會以兩張虛擬網絡卡的形式成對出現,在其中乙個網絡卡發出的資料報,會直接出現在與它對...