Docker通过网桥实现跨主机互联

操作环境:

   Docker版本:Docker version 1.12.6, build ec8512b/1.12.6

   Docker宿主操作系统:CentOS Linux release 7.3.1611 

1、安装支持软件

        配置网桥需要安装 bridge-utils、 pipework,安装如下:

[root@localhost zhpt]# yum install bridge-utils
Loaded plugins: fastestmirror, langpacks
base                                                                                                                                                                                                                                                   | 3.6 kB  00:00:00     
epel/x86_64/metalink                                                                                                                                                                                                                                   | 6.7 kB  00:00:00     
epel                                                                                                                                                                                                                                                   | 4.7 kB  00:00:00     
extras                                                                                                                                                                                                                                                 | 3.4 kB  00:00:00     
pgdg96                                                                                                                                                                                                                                                 | 4.1 kB  00:00:00     
updates                                                                                                                                                                                                                                                | 3.4 kB  00:00:00     
(1/2): epel/x86_64/updateinfo                                                                                                                                                                                                                          | 861 kB  00:00:11     
(2/2): epel/x86_64/primary_db                                                                                                                                                                                                                          | 6.2 MB  00:00:04     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirror01.idc.hinet.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.sohu.com
Package bridge-utils-1.5-9.el7.x86_64 already installed and latest version
Nothing to do


[root@localhost zhpt]#git clone https://github.com/jpetazzo/pipework
Cloning into 'pipework'...
remote: Counting objects: 501, done.
remote: Total 501 (delta 0), reused 0 (delta 0), pack-reused 501
Receiving objects: 100% (501/501), 172.97 KiB | 0 bytes/s, done.
Resolving deltas: 100% (264/264), done.
[root@localhost zhpt]#cp pipework/pipework /usr/local/bin/

2、停止Docker服务

[root@localhost zhpt]# systemctl stop docker.service

3、删除docker0网桥

[root@localhost zhpt]# ip link set dev docker0 down  //关闭docker0网桥
[root@localhost zhpt]# brctl delbr docker0       //删除docker0网桥

4、编辑宿主机器网卡配置文件

        目前宿主机器的网卡为 em1

[root@localhost zhpt]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-em1

      1 TYPE=Ethernet
      2 BOOTPROTO=none
      3 DEFROUTE=yes
      4 IPV4_FAILURE_FATAL=no
      5 IPV6INIT=no
      6 IPV6_AUTOCONF=yes
      7 IPV6_DEFROUTE=yes
      8 IPV6_FAILURE_FATAL=no
      9 IPV6_ADDR_GEN_MODE=stable-privacy
     10 NAME=em1
     11 UUID=c5088dd0-1e56-4997-89c5-7e8a3027fefc
     12 DEVICE=em1
     13 ONBOOT=yes
     14 DNS1=211.136.192.6
     15 DNS2=211.136.20.203
     16 HWADDR=10:98:36:B4:81:01
     17 IPV6_PEERDNS=yes
     18 IPV6_PEERROUTES=yes
     19 IPV6_PRIVACY=no
     20 IPADDR=10.122.111.110
     21 PREFIX=24
     22 GATEWAY=10.122.111.222
     23 BRIDGE=br0   //设置桥接br0

5、新增自定义网桥设置

       工作目录为 /etc/sysconfig/network-scripts,新建文件 ifcfg-br0,如下

[root@localhost network-scripts]# vi ifcfg-br0

      1 DEVICE=br0
      2 TYPE=Bridge
      3 BOOTPROTO=static
      4 ONBOOT=yes
      5 DELAY=0
      6 STP=yes
      7 IPADDR=10.122.111.110
      8 NETMASK=255.255.255.0
      9 GATEWAY=10.122.111.222
     10 DNS1=211.136.192.6
     11 DNS2=211.136.20.203

6、关闭、停止、重启 相关服务

[root@localhost zhpt]# systemctl stop NetworkManager
[root@localhost zhpt]# systemctl disable NetworkManager
[root@localhost zhpt]# systemctl restart network

7、查看虚拟网桥是否设置成功

bridge name	bridge id		    STP enabled	   interfaces
br0		    8000.109836b48101	yes		       em1

8、设置docker服务启动参数

    不同的linux操作系统docker的配置文件所在不同,centos 在/etc/sysconfig/docker,主要修改是

     在 “--selinux-enabled ” 后添加 “ -b=br0” 指定网桥设置,如下图。

[root@localhost zhpt]# vim /etc/sysconfig/docker

OPTIONS='--selinux-enabled -b=br0  --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
     DOCKER_CERT_PATH=/etc/docker
 fi

9、启动Docker服务

[root@localhost zhpt]# systemctl start docker.service

10、启动一个手动设置网络的容器

          这里最好不要让docker自动获取ip,下次启动会有变化而且自动获取的ip可能会和物理网段中的ip冲突。

[root@localhost zhpt]# docker run -itd --net=none --name=ruoli_test docker.io/centos /bin/bash
84a6405887b4cb7908f766e8d1ea186b033227984655b97be001b01ad26b2a0a

11、为名称为ruoli_test的容器设置一个与桥接物理网络同地址段的ip

设置格式为 ip@网关

[root@localhost zhpt]# pipework br0 ruoli_test 10.122.111.71/24@10.122.111.222

12、进入ruoli_test 容器

[root@localhost zhpt]# docker attach ruoli_test
[root@84a6405887b4 /]# ping www.baidu.com
PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=1 ttl=55 time=8.79 ms
64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=2 ttl=55 time=8.73 ms

      此时此容器已经可以与其他服务器进行互联。

转载于:https://my.oschina.net/ruoli/blog/1592568

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值