加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Docker主机之间容器通信

发布时间:2023-06-06 14:19:52 所属栏目:教程 来源:
导读:桥接模式,多个宿主机位于同一个局域网,将每一个宿主机上的容器网络桥接到宿主机网络中,容器和宿主机同在一个局域网中互相通信。每台宿主机上的容器都直接从局域网中获取IP地址,容易导致IP地址冲突。

端口映射
桥接模式,多个宿主机位于同一个局域网,将每一个宿主机上的容器网络桥接到宿主机网络中,容器和宿主机同在一个局域网中互相通信。每台宿主机上的容器都直接从局域网中获取IP地址,容易导致IP地址冲突。

端口映射模式,是将容器的服务所运行的端口映射到宿主机的某一个端口,然后其他的容器通过宿主机的对应端口进行访问。只要宿主机间能互相通信,容器之间就能通过宿主机的指定端口进行通信。但是这种方式需要对每一个容器都映射端口,而且宿主机的端口也有限。

Overlay 网络
Overlay网络依赖额外的服务和配置,配置较为复杂,我们在后续容器云平台一节会再次提到它的应用。

Macvlan 网络
macvlan 是 Linux 的内核模块,是一种网卡虚拟化技术,功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的MAC地址在数据链路层进行网络数据的转发,一块网卡上配置多个 MAC 地址,每个interface 可以配置自己的 IP。

Docker 的 macvlan 网络使用了 macvlan 驱动。 在物理网络拓扑结构上看,每张虚拟网卡都是一个单独的网口。

我们需要两台装好 Docker 服务的 Linux 虚拟机,并且虚拟机的网络要互通。

创建 macvlan 网络,在两个节点上都进行此操作:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth1 -o macvlan_mode=bridge macvlan_net 
macvlan 是 kernel 的模块名;
192.168.2.0/24是宿主机所在网络的网段;
192.168.2.1是网关;
eth1 是 Docker 宿主机(两台虚拟机)接入192.168.1.0/24 的物理网口。

创建容器并指定 IP:
容器b1:

docker run -it -d --net macvlan_net --ip=192.168.1.101 --name b1 busyBox
容器b2:

docker run -it -d --net macvlan_net --ip=192.168.1.102 --name b2 busyBox
测试容器通信
容器b1:

docker exec -it b1 ping 192.168.1.102
容器b2:

docker exec -it b2 ping 192.168.1.101

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章