Docker手動配置容器網路

2021-10-09 15:27:34 字數 1324 閱讀 8053

首先,啟動乙個ubuntu容器指定–net=none引數:

$ docker run -i -t --rm --net=none sshd:latest /bin/bash

root@2f63edb0144a:/#

在本地查詢容器的程序id,並為它建立網路命名空間:

$ docker inspect -f '}' 2f63edb0144a 

44393

$ pid=44393

$ sudo

mkdir -p /var/run/netns

$ sudo

ln -s /proc/$pid/ns/net /var/run/netns/$pid

檢查橋接網絡卡的ip和子網掩碼資訊:

[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

建立一對「veth pair」介面a和b,繫結a介面到網橋docker0,並啟用它:

$ ip link add a type veth peer name b

$ brctl addif docker0 a

$ ip link

set a up

將b介面放到容器的網路命名空間,命名為eht0,啟動它並配置乙個可用的ip(橋接網段)和預設閘道器:

$ 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配置網路的具體過程:

當容器終止後,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後,會以兩張虛擬網絡卡的形式成對出現,在其中乙個網絡卡發出的資料報,會直接出現在與它對...