docker之跨主机通信

本地workstations虚拟机server1和server2环境为centOS7.7,安装软件为docker-ce,docker版本为19.03.05
docker安装就不介绍了,直接进主题。
一、准备工作
跨主机需要两个独立的网卡:
server1和server2添加网卡



[[email protected] ~]# ip addr show 查看网卡是否添加成功


添加成功。

macvlan本身是linxu kernel的模块,本质上是一种网卡虚拟化技术。其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的MAC地址在数据链路层进行网络数据的转发,一块网卡上配置多个 MAC 地址(即多个 interface),每个interface可以配置自己的IP,Docker的macvlan网络实际上就是使用了Linux提供的macvlan驱 动。因为多个MAC地址的网络数据包都是从同一块网卡上传输,所以需要打开网卡的混杂模式ip link set eth1 promisc on。

打开server1和server2的ens37网卡的混杂模式,在server1和server2上运行以下命令:
[[email protected] ~]# ip link set ens37 promisc on
[[email protected] ~]# ip addr show ens37


注意:如果不开启混杂模式,会导致macvlan网络无法访问外界
具体在不使用vlan时,表现为无法ping通路由,无法ping通同一网络内其他主机
在两台主机上各创建macvlan网络
创建macvlan网络不同于桥接模式,需要指定网段和网关(因为要保证跨主机上网段和网关是相同的),并且都得是真实存在的
[[email protected] ~]# docker network create -d macvlan --subnet 172.16.36.0/24 --gateway 172.16.36.254 -o parent=ens37 macvlan #创建名为macvlan的网络
[[email protected] ~]# docker network ls #查看本地网络信息

创建docker容器
server1:
[[email protected] ~]# docker run -it --name vm01 --network=macvlan --ip=172.16.36.101 centos
[[email protected] /]# ip addr

[[email protected] /]# ping 172.16.36.100


server2:
[[email protected] ~]# docker run -it --name vm02 --network=macvlan --ip=172.16.36.100 centos
[[email protected] /]# ip addr

[[email protected] /]# ping 172.16.36.101

跨主机通信就这样配置完了。

原文地址:https://blog.51cto.com/3001441/2464181

时间: 2024-08-28 22:57:35

docker之跨主机通信的相关文章

Docker容器跨主机通信之:直接路由方式

概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病,而不同主机上的Docker容器之间只能通过在主机上用映射端口的方法来进行通信,有时这种方式会很不方便,甚至达不到我们的要求,因此位于不同物理机上的Docker容器之间直接使用本身的IP地址进行通信很有必要.再者说,如果将Docker容器起在不同的物理主机上,我们不可避免的会遭遇到Docker容器的跨主机通信问题.本文就来尝试一下. 方案原理分析 由于使用容器的IP进行路由,就

Docker容器跨主机通信之:OVS+GRE

一.概述 由于docker自身还未支持跨主机容器通信,需要借助docker网络开源解决方案 OVS OpenVSwich即开放式虚拟交换机实现,简称OVS,OVS在云计算领域应用广泛,值得我们去学习使用. OpenVSwich OpenVSwich是一种开源软件,通过软件的方式实现二层交换机功能,专门管理多租赁云计算网络环境,提供虚拟网络中的访问策略.网络隔离.流量监控等. 既然是虚拟交换机,自然与传统的物理交换机有着相同的特性,操作中可以按照理解物理交换机的方式去操作,有助于对虚拟交换机的认识

Docker容器跨主机多网段通信解决方案

实现Docker的跨主机网络通信的方案有很多,比如在之前博文中写到的通过部署consul服务实现Docker容器跨主机通信 ,但是consul服务并不能实现多个网段跨主机进行通信,在这种情况之下,MacVlan的概念就应用而生了. Macvlan工作原理: Macvlan是Linux内核支持的网络接口.要求的Linux内部版本是v3.9–3.19和4.0+: 通过为物理网卡创建Macvlan子接口,允许一块物理网卡拥有多个独立的MAC地址和IP地址.虚拟出来的子接口将直接暴露在相邻物理网络中.从

Docker跨主机通信:桥接方式和路由方式

1.直接路由 通过在主机中添加静态路由来实现跨主机通信.如果有两台主机host1和host2,两主机上的docker容器是两个独立的二层网络,将con1发往con2的数据流先转发到主机host2上,再由host2转发到其上的docker容器中,反之亦然. 由于使用容器的IP进行路由,就需要避免不同主机上的docker容器使用相同冲突的IP,所有应该为不同的主机分配不同的IP子网. #主机A上:192.168.187.143,主机B:192.168.187.144 #S1:添加网卡docker0,

overlay 如何实现跨主机通信?- 每天5分钟玩转 Docker 容器技术(52)

上一节我们在 host1 中运行了容器 bbox1,今天将详细讨论 overlay 网络跨主机通信的原理. 在 host2 中运行容器 bbox2: bbox2 IP 为 10.0.0.3,可以直接 ping bbox1: 可见 overlay 网络中的容器可以直接通信,同时 docker 也实现了 DNS 服务. 下面我们讨论一下 overlay 网络的具体实现: docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux brid

Docker跨主机通信网络

Docker跨主机通信网络 跨主机网络方案包括: docker原生的 overlay 和 macvlan.第三方方案:常用的包括flannel.weave 和 calico. (1)准备 Overlay 网络实验环境 [[email protected] ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap [[email protected] ~]# netstat -

Docker:macvlan实现容器跨主机通信 [十四]

一.什么是macvlan 1.macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址, 2.即多个 interface,每个 interface 可以配置自己的 IP. 3.macvlan 本质上是一种网卡虚拟化技术 二.跨主机通信 1.创建macvlan 1.主机luoahong [[email protected] ~]# docker network create --driver macvlan --subnet 10.0.0.0/2

docker之docker容器flannel模式多网段跨主机通信

一.简介flannel是为实现多网段通信的第三方的解决方案, 是 CoreOS 开发的容器网络解决方案.flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 host 间路由,容器间无需 NAT 和 port mapping 就可以跨主机通信.每个 subnet 都是从一个更大的 IP 池中划分的,flannel 会在每个主机上运行一个叫 flanneld 的 agent,其职责就是从池子中分配 subnet.为了在各个主机间共享信息

(八)Docker网络跨主机通讯vxlan和vlan

基于OpenvSwitch实现跨主机通信: 环境描述: 计算机名称 IP Docker01 eth0:192.168.124.150/24 eth1:172.16.100.20/24 docker0:172.17.0.1/24(默认) Docker02 eth0:192.168.124.15124 eth1:172.16.100.30/24 docker0:172.17.0.1/24(默认) dockerothsrv eth0:192.168.124.152/24 eth1:172.16.100