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 外网

  

以上实验完成。

转载于:https://www.cnblogs.com/jcici/p/9555205.html

docker容器跨宿主机通信相关推荐

  1. docker实现跨宿主机的容器之间网络互联

    背景:最近闲来无事,想到之前开发提出的问题不用k8s那套网络插件如何实现跨宿主机的容器之间网络互联,顺便复习下iptables知识点. docker实现跨宿主机的容器之间网络互联 一. 环境介绍 二. ...

  2. Docker学习:跨宿主机通信 | overlay和macvlay(理论+实战篇)

    前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,带你一起 深入了解在编排工具出现前,跨宿主机通信的两大得力干将overlay.macvlay,这也会后期学好K8s做好基本功铺垫,打下一 ...

  3. DOCKER容器与宿主机同网段互相通信

    相关阅读: Docker容器时间与宿主机同步 使用Docker搭建WordPress博客 Docker私有仓库搭建及镜像删除 Docker镜像的导入和导出 在Docker上部署Ambari 博主最近在 ...

  4. Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案

    Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案 参考文章: (1)Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案 (2)https://www.cnbl ...

  5. Doker : Docker 容器与宿主机共享文件

    1.美图 2.概述 docker run-it -v /宿主机绝对路径目录:/容器内目录 镜像名 这样的话,你无论在哪个地方创建文件,都能在对方目录下看到数据 绑定成功的标志

  6. docker 容器访问宿主机的解决方式

    需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务. 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip ...

  7. docker容器和宿主机的主机名映射失败

    一.为什么将 Oracle 部署在 docker容器中 我们首先通过 docker 安装了 oracle11g 版本的 Oracle 数据库--不要问我为什么通过 docker 安装数据库,正确做法或 ...

  8. docker容器的网络配置,允许docker可以被宿主机以外的其它主机访问以及局域网内可以直接访问docker容器ip

    自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求.容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信. 一.端口映射(局域网,外网 ...

  9. docker中容器与宿主机之间的网络关系

    接上一篇jupter远程访问 docker中容器与宿主机之间的网络关系 一.PC上的网络关系 1.网卡的物理地址 网卡的物理地址(MAC地址):是网卡的唯一标识.由生产厂商写入网卡中.MAC地址就如同 ...

  10. docker如何查看宿主机到容器端口映射

    docker/Docker如何查看宿主机到容器端口映射关系 背景 前些天的时候, 在定位问题时发现docker emqx 连接websocket (8083)端口出现异常. 经过很长时间定位, 才发现 ...

最新文章

  1. 为rm添加一个回收站|将linux下的rm命令改造成mv到指定的目录下
  2. cpu高 thread vm_阿里大佬总结,Java高并发必读!
  3. 正则表达式下——相关方法
  4. Py之scikit-learn:机器学习Sklearn库的简介、安装、使用方法(ML算法如何选择)、代码实现之详细攻略
  5. 为什么let在php中报错,PHPlet在Windows下的安装
  6. react.js从入门到精通(一)
  7. matlab 白色像素点,MATLAB 簡單的計算白色輪廓中像素點的個數
  8. 四宫格效果 css_【深度教研】智力游戏“九宫格” 集体教研活动纪实
  9. Oracle基础知识-SQL简单命令
  10. mysql的事务日志_MySQL 事务日志
  11. mysql like html_mysql - MySQL RLIKE查找,然后替换打开和关闭HTML标记之间的所有字符 - 堆栈内存溢出...
  12. hadoop eclipse 插件
  13. rtems源码树结构
  14. 【Redis】redis cluster 添加 删除 重分配 节点
  15. ios android 通用字体,教你如何在iOS项目中设置各种字体
  16. 卡内基梅隆计算机专业,卡内基梅隆大学计算机专业介绍
  17. java魂斗罗_向经典致敬--跟我用Java写魂斗罗
  18. tipask 修改,临时的(暂没进行很好的全面考虑,为上线用)
  19. 回归常态啦 2020.12.08日记
  20. Python自动化运维脚本

热门文章

  1. 描述cookie,sessionstroage,localstrage的区别
  2. 如何开发和维能hold住全场的软件
  3. 各种内部排序算法,C#实现
  4. *为需要读写VRML(.wrl)文件的同志们指点一条路
  5. CListCtrl控件的使用指南
  6. 一本通1261:【例9.5】城市交通路网
  7. Windows Performance Monitor 学习笔记
  8. wince中实现SQLite数据库及二进制文件保存与读取
  9. C#两种创建快捷方式的方法
  10. python3.7.4安装chrome_Python3.7安装chrome驱动方法