文章目录

前言

一、使用docker原生网络驱动macvlan

二、使用docker原生网驱动Overlay+consul

总结


前言

目前大家使用docker容器来部署服务越来越普遍,当我们需要在多个docker容器里实现跨宿主机通信时就会遇到网络问题,本文就此问题提供解决方案

一、使用docker原生网络驱动macvlan

Docker 官方在1.12版本之后引入macvlan网络驱动,可以简单的为容器配置桥接网络,原理:在宿主机物理网卡上虚拟出多个子网卡,通过不同的MAC地址在数据链路层进行网络数据转发,但需要linux内核支持(Linux kernel v3.9–3.19 and 4.0+),macvlan模式不依赖网桥,所以brctl show查看并没有创建新的bridge。

实现方案步骤:

1.将物理网卡设置混杂模式

ip link set eno1 promisc on

2.创建macvlan,每台宿主机均执行

docker network create -d macvlan --subnet 172.19.0.0/24 --gateway 172.19.0.1 -o parent=网卡名 网络别名

3.docker-compose修改networks指定容器ip(根据创建macvlan网段)

二、使用docker原生网驱动Overlay+consul

使用前提条件:

docker运行在Swarm模式(Swarm是Docker的一个编排工具)或 使用键值存储docker主机集群。

使用键值实现需要满足以下条件:

1.集群中主机连接到键值存储,Docker支持Consul、Etcd和Zookeeper;

2.集群中主机运行一个Docker守护进程;

3.集群中主机必须具有唯一的主机名,因为键值存储使用主机名来标识集群成员;

4.集群中Linux主机内核版本3.12+,支持VXLAN数据包处理,否则可能无法通信

使用键值实现具体步骤:

准备两台宿主机:192.168.2.7和192.168.2.63

STEP1:

选择一台宿主机拉取consul镜像或直接运行命令(部分consul版本的KV访问异常)

docker run -di  -h consul -p 8500:8500 --name=consul consul:1.5.2

STEP2:

修改宿主机docker配置文件,如图

#192.168.2.7 /etc/docker/daemon.json

"cluster-store": "consul://192.168.2.7:8500",

"cluster-advertise": "192.168.2.7:2376",

"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],

"live-restore":true

修改保存2.7执行:

systemctl daemon-reload

systemctl restart docker

#192.168.2.63 /etc/docker/daemon.json

"cluster-store": "consul://192.168.2.7:8500",

"cluster-advertise": "192.168.2.63:2376",

"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],

"live-restore":true

修改保存2.63执行:

systemctl daemon-reload

systemctl restart docker

STEP3:consul查看docker节点,如图

STEP4:在consul所在宿主机创建overlay网络

192.168.2.7创建命令:docker network create -d overlay qsdi-net

另一台宿主机将同步192.168.2.7创建的overlay网络

STEP5:启动容器(docker-compose)

该方式不需要指定IP,容器启动成功后,通过docker network inspect a34bf8d96d3e查看对应的IP,同时进入容器,通过ping 网络命名或IP均通

第一种方式就ok了


总结

以上就是今天要讲的内容,本文说明了docker容器在跨宿主机的情况下如何通信的问题

Docker容器实现跨宿主机通信相关推荐

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

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

  2. docker容器无法访问宿主机报出 No route to host

    项目场景: 提示:docker容器无法访问宿主机报出 No route to host: 例如:防火墙环境下,docker容器无法访问宿主机的其他应用端口 原因分析: 在进行docker部署的时候我们 ...

  3. 17.Docker 容器时间与宿主机同步

    Docker容器时间与宿主机同步 BY 赫墨拉 · PUBLISHED 2018年7月10日 · UPDATED 2019年6月10日 问题描述: 在我们平时使用docker,运行我们的应用的时候,访 ...

  4. Docker容器时间与宿主机同步

    转载地址:http://www.louisvv.com/archives/1716.html 问题描述: 在我们平时使用docker,运行我们的应用的时候,访问应用页面的时间与现在相差8个小时 无法结 ...

  5. docker容器端口影射宿主机端口

    #将容器的8080端口映射宿主机端口8080 –name:给容器起的名称 docker run -d -p 8080:8080 --name="tomcat7" -id 1130e ...

  6. Docker容器时间与宿主机不一致?3个解决方案

    目录 前言 更新历史 问题描述 解决方案 docker run 添加时间参数 Dockerfile解决方案 docker-compose解决方案 宿主机直接执行命令给某个容器同步时间 异常问题 Doc ...

  7. 【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本

    思路 我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作. 使用 sshpass (我的是CentOS 7.9环境) 1.安装sshpass apt-get update //更新一下 apt- ...

  8. docker容器时区与宿主机不一致的解决方法

    一般情况下,我们的宿主机服务器的时区都是在东八区,而docker容器里却是在零时区.这样就导致了时间差了8个小时,所以需要把容器的时间也设置成东八区. 在dockerfile中的设置如下: RUN l ...

  9. docker容器正常启动宿主机却无法正常访问

    问题:重新开启linux虚拟机后有时候可以访问有时候不可以访问docker容器或者完全无法访问 原因:linux内核版本和docker版本不兼容 解决:更新linux内核版本 yum update - ...

  10. windows10配置Docker容器独立IP地址互相通信

    Docker官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用.一般过程是: 1.Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器 ...

最新文章

  1. 超硬核全套Java视频教程(学习路线+免费视频+配套资料)
  2. SAP 生产订单结算
  3. js基础语法(01)-JS中+号的三种含义
  4. typeof null的返回值是什么?_数据类型与typeof
  5. 卷积神经网络CNN如何训练?
  6. DotNetBar for Windows Forms 11.8.0.8冰河之刃重打包版
  7. getAttribute 与getParmeter 区别
  8. 如何成为一名卓越的数据科学家——开篇七剑
  9. 学技术的不能自废武功
  10. 自制计算器(C语言的简单实现)(可多次使用)
  11. RHadoop搭建(HBase)
  12. cad命令栏还原默认_CAD命令行不见了怎么重新恢复?
  13. Python穷举法破解密码
  14. css动画无限循环转圈,css实现无限循环
  15. 发表微信朋友圈不带图片怎么发
  16. windows安装paddlepaddle踩坑教程
  17. 百度阿里网易大疆等大小厂前端校招面筋 1
  18. [NOIP2017模拟]permut
  19. php 获取指定日期所在月份的最后一天
  20. Wordpress采集支持中英Wordpress采集

热门文章

  1. 去掉vue中万恶的eslint
  2. csdn博客文章头部自动生成目录
  3. centos 关机命令_全了 Linux 常用命令大汇集
  4. mysql驱动有什么用_什么是数据库驱动?
  5. 关于纯流量卡-物联网卡的一点个人看法
  6. 高德地图—js.api
  7. java 汉语词频_java中文词频统计
  8. 降维 php,线性降维方法 - 百度开发者中心的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 【大话设计模式】第0章 面向对象基础
  10. pgm图像修改java_【转】 PGM图像处理方法详解