docker容器跨宿主機通信


docker容器跨宿主機通信

openvswitch安裝

  安裝依賴

    yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config python-devel openssl-devel kernel-devel kernel-debug-devel libtool wget

    yum install -y python-six selinux-policy-devel

  預處理    

    mkdir -p ~ /rpmbuild/SOURCES
    wget http://openvswitch.org/releases/openvswitch-2.7.0.tar.gz
    cp openvswitch-2.7.0.tar.gz ~/rpmbuild/SOURCES/
    tar -zxf openvswitch-2.7.0.tar.gz
    sed 's/openvswitch-kmod, //g' openvswitch-2.7.0/rhel/openvswitch.spec > openvswitch-2.7.0/rhel/openvswitch_no_kmod.spec
  構建rpm安裝包
    rpmbuild -bb --nocheck ~/openvswitch-2.7.0/rhel/openvswitch_no_kmod.spec
  安裝
    yum localinstall ~/rpmbuild/RPMS/x86_64/openvswitch-2.7.0-1.x86_64.rpm
   啟動openvswitch服務
    setenforce 0
    systemctl start openvswitch.service
 
   網絡配置
    

 

 配置步驟

  先分配好docker的ip規划

  環境

    server1 192.168.32.232 centos7

    server2 192.168.32.245 centos7

  本次例子 server1 docker 172.17.1.0/24 255.255.255.0

            server2 docker 172.17.2.0/24 255.255.255.0

  創建網橋kbr0,刪除docker0 

  ovs-vsctl add-br obr0
  ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.32.232  #ip為本地ip
  brctl addbr kbr0
  brctl addif kbr0 obr0
  ip link set dev docker0 down
  ip link del dev docker0
  配置kbr0網卡信息
vim /etc/sysconfig/network-scripts/ifcfg-kbr0
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no

  配置路由信息,用於轉發到其他的宿主機上docker容器。

  vim /etc/sysconfig/network-scripts/route-ens192

  172.17.2.0/24 via 192.168.32.245 dev ens192

  •   表示在192.168.32.245上面的docker網段是172.17.2.0/24

  重啟網卡配置  systemctl restart network

  server2的配置大致一樣,只需更改一些本地ip即可

 

設置docker容器網橋

  echo 'DOCKER_OPTS="-b=kbr0"' >> /etc/sysconfig/docker

  

vim /usr/lib/systemd/system/docker.service 
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

 

  重啟docker 

    systemctl daemon-reload

    systemctl restart docker

測試網絡

  在兩台主機上分別啟動容器

  docker run -d --name=gggg centos /bin/bash

  

  可以看到當前網卡信息為172.17.1.2

  ping宿主機

  

  ping server2的容器

  

  ping 外網

  

 

以上實驗完成。

 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM