docker+OVS

测试1:⽆⽹络情况下通过ovs镜像打通⽹络

mkdir /var/run/netns/
创造主机 (ovs主机⼀定要以--privileged执⾏!!!!)
docker run -it --rm --name=host1 myubuntu#创建容器
docker run -it --rm --name=ovs1 --privileged=true ovs:my
docker run -it --rm --name=host2 myubuntu
nspid1=$(docker inspect -f '{{.State.Pid}}' host1)#取host1进程号,并将其作为值赋值给变量nspid1
sudo ln -s /proc/${nspid1}/ns/net /var/run/netns/${nspid1}#软连接
 **容器被创建出来后,ip netns命令是无法管理容器的网络命名空间的,**
# 这是因为ip netns命令是从/var/run/netns文件夹中读取内容的,
# 而容器的网络命名空间位于/proc/[PID]/ns/net,
# 要使用ip netns命令去管理容器的网络命名空间,
# 就需要将容器的网络命名空间软链接到/var/run/netns
nspid2=$(docker inspect -f '{{.State.Pid}}' ovs1)#$()是将括号内命令的执行结果赋值给变量
sudo ln -s /proc/${nspid2}/ns/net /var/run/netns/${nspid2}
nspid3=$(docker inspect -f '{{.State.Pid}}' host2)
sudo ln -s /proc/${nspid3}/ns/net /var/run/netns/${nspid3}

补充知识

  1. 网络命名空间
    网络命名空间基础知识
  2. docker容器互联
    docker容器互联

# 创建peer接⼝对
sudo ip link add ens0 type veth peer name ens1#创建一对虚拟网卡
sudo ip link set ens0 netns ${nspid1}#将ens0接入命名空间nspid1
sudo ip link set ens1 netns ${nspid2}
sudo ip netns exec ${nspid1} ip link set ens0 up#进入命名空间nspid1并使ens0up起来
sudo ip netns exec ${nspid1} ip addr add 100.0.0.1/24 dev ens0#进入命名空间nspid1给ens0配置IP
sudo ip netns exec ${nspid2} ip link set ens1 up

sudo ip link add ens2 type veth peer name ens3
sudo ip link set ens2 netns ${nspid2}
sudo ip link set ens3 netns ${nspid3}
sudo ip netns exec ${nspid2} ip link set ens2 up
sudo ip netns exec ${nspid3} ip link set ens3 up
sudo ip netns exec ${nspid3} ip addr add 100.0.0.2/24 dev ens3
##########ovs1中执⾏命令################

```bash
#启动ovs服务:
/usr/share/openvswitch/scripts/ovs-ctl start
#ovs创造⽹桥
ovs-vsctl add-br br0
#添加端⼝
ovs-vsctl add-port br0 ens1
ovs-vsctl add-port br0 ens2
#下发流表
ovs-ofctl add-flow br0 "cookie=0,priority=40001,in_port=1 actions=output:2"
ovs-ofctl add-flow br0 "cookie=0,priority=40001,in_port=2 actions=output:1"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值