您的位置:首页 > 运维架构 > Docker

docker 创建网桥

2018-01-14 22:59 197 查看
运行一个容器name=test1

docker run -itd --name test1 --net=none ubuntu /bin/bash


建立一个容器连接的网桥 br0, host.eth0 —br0— veth-a <–> veth-b(eth0) in container

brctl addbr br0
ip link set br0 up


将主机eno1连接到br0上,并把eno1的IP配在br0上, 删除原有路由,添加新的default路由到br0上。由于远程执行,会导致断网,因此在一条命令中执行。

ip addr add 109.105.115.74/24 dev br0; ip addr del 109.105.115.74/24 dev eno1; brctl addif br0 eth0; ip route del default; ip route add default via 109.105.115.1 dev br0;


找到test1的PID,保存到pid中

pid=$(docker inspect --format '{{ .State.Pid }}' test1)


将容器的network namespace添加到/var/run/netns目录下

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


创建用于连接网桥br0和docker容器的网卡设备 veth设备

ip link add veth-a type veth peer name veth-b


将veth-a连到br0上

ip link set veth-a up
brctl addif br0 veth-a


将veth-b放到容器test1里的network nemespace,重命名为eth0,并为其配置IP和默认路由

ip link set veth-b netns $pid

ip netns exec $pid ip link set dev veth-b name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add 109.105.115.201/24 dev eth0
ip netns exec $pid ip route add default via 109.105.115.1 dev eth0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: