Docker容器实现跨宿主机通信

文章目录

前言

一、使用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容器在跨宿主机的情况下如何通信的问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zrx林夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值