docker 创建网桥

运行一个容器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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值