docker容器使用pipework桥接网络跨主机通信

docker容器的跨主机通信有好多种方案,此处用的是桥接物理网卡的方式实现的;

一、新建网卡,并桥接物理网卡;

在宿主机上新建一个网卡,并桥接物理网卡,可以使用 nm-connection-editor 命令进入图形化界面进行配置,也可以用 nmcli connection 命令的方式配置,还可以使用 在/etc/sysconfig/network-scripts/下编辑配置文件的方式进行配置;

为了快速方便,此处使用  nmcli connection 命令的方式进行配置:

1、创建新网卡;

nmcli connection add type bridge con-name bridge1 ifname br_1

#bridge1 和 br_1 是网卡名字,可以随便写;

2、修改网卡参数;

nmcli connection modify bridge1 ipv4.addresses 192.168.139.200/24 ipv4.gateway 192.168.139.2 ipv4.method manual

#ipv4.addresses是宿主机网段中的一个ip,可以和宿主机ip相同,为了抢占宿主机的网卡使用权;

#ipv4.gateway是宿主机的网关,不知道的可以 route -n 看下;

#ipv4.method 是设置该网卡为手动,即:不需要自动获取ip;

3、配置桥接;

nmcli connection add type bridge-slave ifname ens33 con-name br-slave master br_1

#ifname 是宿主机的物理网卡;

#br-slave 是桥接的网卡,可以随便写;

#br_1 是上面创建的网卡;

4、执行结果;

5、需要 systemctl restart network 重启网卡;

重启后 ssh 192.168.139.200 进行连接;通过 ip a 命令可以看到:

原有的物理网卡 ens33 没有了ip,创建的 br_1 是我们设定的ip;再通过 brctl show 查看:

br_1桥接到了原有的物理网卡ens33上;但此时如果你ping百度的话应该是不通的,根据错误进行排查是路由问题还是dns问题:

6、配置好桥接网络再进行以下步骤;

二、下载pipework工具,并配置环境变量;

1、pipework工具github链接: https://github.com/jpetazzo ;你会发现大神总有与众不同的地方,膜拜......

2、执行git命令拉取,并配置环境变量:

git clone https://github.com/jpetazzo/pipework
cp ./pipework/pipework /usr/local/bin/

ok,现在可以使用 pipework 这个命令工具了;

三、运行一个容器并使用none网络模式;

1、大家都知道docker容器有三种网络模式: bridge、host、none,具体作用此处不再多述;

2、创建一个none网络的容器:

docker run -it --network none --name pipework_test centos:full /bin/bash

none网络是只有lo网卡的;

四、使用pipework进行配置容器 pipework_test 的ip地址;

1、 执行命令给容器配置ip:

pipework bridge0 pipework_test 192.168.139.210/24@192.168.139.2

#192.168.139.210是给容器配置的ip,应考虑避免网段中是否已有该ip;

#192.168.139.2是网关,也就是宿主机网关;

五、测试通信;

到容器中查看:

多出来一个eth1的网卡;

ok;再来看一下路由和dns:

正常;

最后ping一下百度:

ok;到此完毕;

 

  • 注: 容器重启后会导致pipework配置的ip消失;
  • 可以通过shell脚本进行自动化ip的配置,具体看个人应用情况了;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值