首页 > 其他分享 >Docker-网络&跨主机通信

Docker-网络&跨主机通信

时间:2025-01-12 20:34:10浏览次数:3  
标签:容器 主机 通信 192.168 网桥 ff ip Docker

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:

Docker基本情况

Docker基本命令

Dockerfile

Docker镜像

Docker仓库

Docker原理

Docker网络&存储&日志(本小节属于)

Docker-Compose

Docker番外篇

我们在讲解docker详细信息的时候,讲过docker有多种网络模式,今天我们就来详细讲解下最重要的网络模式-桥接模式,以及如何实现Docker的跨主机通信。

Bridge Network(桥接模式)

创建网桥

docker network create -d bridge my-bridge

使用网桥

创建一个自定义的 bridge 网络。在创建容器时,通过--network my-bridge参数将容器连接到这个自定义的 bridge 网络。

docker run -itd --network my-bridge 192.168.31.43:5000/centos:7

如前面所述,bridge 网络是 Docker 默认的网络模式。它基于 Linux 网桥(如docker0)来实现。当创建一个 bridge 网络的容器时,Docker 会为容器创建一对虚拟网络接口(veth pair)。一个接口放在容器内部作为容器的网络接口,另一个接口连接到宿主机的网桥。这样,容器之间就可以通过网桥进行通信,并且可以通过宿主机的网络接口访问外部网络。网桥起到了类似于物理交换机的作用,它根据 MAC 地址来转发数据包。

默认的Docker网桥docker0默认的地址是172.17.0.1/16,所以我们默认安装Docker以后,创建的容器ip地址都是从这里分配出去的。

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:fb:2c:07:61 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

如果我们手工创建了网桥则IP地址会递归变成172.18.0.1/16,然后我们如果创建的容器使用了这个网桥,则ip地址也会从这个地址段进行分配的。

4: br-e344a2408164: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:cf:2e:80:30 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-e344a2408164
       valid_lft forever preferred_lft forever
    inet6 fe80::42:cfff:fe2e:8030/64 scope link 
       valid_lft forever preferred_lft forever
#这个就是其中一个容器网络接口信息
#虽然看不到对应的ip地址
#但是可以看到他接入的网桥是是上面的网桥地址
6: vethbfe8be7@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-e344a2408164 state UP group default 
    link/ether 22:15:68:6f:e1:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::2015:68ff:fe6f:e126/64 scope link 
       valid_lft forever preferred_lft forever

​​​​​普通应用,一般很少会额外创建网桥,但是在compose里面会使用得比较多一点。

跨主机通信

由于其他网络模式使用较少,所以我们这里就不讲解。从上面的信息我们可以看到如果要实现跨主机通信,那么必须要确保每个主机的的网桥ip地址不冲突,其实k8s也是需要每个主机的的容器ip地址段不冲突,下面我们就手工模拟下如何实现跨主机通信。

这个需求也是来源也是以前的工作经验,因为如果你做公司业务容器化改造的时候,可能会出现部分业务已经完成容器化而部分业务还没有改造,而他们会有相互调用关系。

主机IP

容器IP

192.168.31.209

172.16.1.1/24

192.168.31.210

172.16.2.1/24

1.修改docker0网桥的地址​​​​​​​

#vi /etc/docker/daemon.json
#这个地址尽量避免和主机ip地址冲突,然后重启docker
#192.168.31.209 配置
{
  "bip": "192.168.1.1/24"
}
#vi /etc/docker/daemon.json
#这个地址尽量避免和主机ip地址冲突,然后重启docker
#192.168.31.201 配置
{
  "bip": "192.168.2.1/24"
}

​​​​​​​

2.手动添加路由​​​​​​​

#31.210配置
ip route add 192.168.1.0/24 via 192.168.31.209
#31.209配置
ip route add 192.168.2.0/24 via 192.168.31.210

​​​​​​​

3.开启iptables转发​​​​​​​

#31.209和31.210同时配置
iptables -P FORWARD ACCEPT

这样就可以实现跨主机通信,但是我们这个是手工维护的规则,适合临时使用,不适合大面积使用。实际上在k8s里面有一个网络组件Calico,他就有一种模式其实就和我们上面路由模式。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

标签:容器,主机,通信,192.168,网桥,ff,ip,Docker
From: https://blog.csdn.net/dessler/article/details/145042020

相关文章

  • 覆盖和覆盖D2D通信网络的传输容量分析(Matlab代码实现)
    ......
  • 【Docker】Docker搭建一款开源的RAG聊天应用
    项目介绍Kotaemon是一个由Cinnamon开发的开源项目,旨在提供一个基于检索增强生成(RAG)技术的用户界面,使用户能够与自己的文档进行交互问答。功能特点文档问答:Kotaemon允许用户通过自然语言查询与文档进行交互,快速获取所需信息。这一功能在学术研究、企业文档管理等领域具有广泛应......
  • 【Docker】Docker搭建一款开源的加密货币量化交易平台
    项目介绍Freqtrade是一个开源的加密货币量化交易平台,它允许用户通过编写和配置交易策略来自动化交易过程。功能特点开源性:Freqtrade的代码是开源的,这意味着用户可以查看、修改和扩展平台的功能。自动化交易:通过配置交易策略,Freqtrade可以自动执行买卖操作,无需人工干预。多交......
  • docker和jinkins部署
    1.安装docker1.**更新软件包索引**:```bashsudoyumupdate```2.**安装必要的包**:```bashsudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2```3.**添加Docker的官方存储库**:```bashsudoyum-config-manager--add-repohttps://d......
  • 如何查看虚拟主机的IP地址和端口号?
    关于如何查看虚拟主机的IP地址和端口号,这取决于您具体的需求。如果您是需要登录FTP进行文件管理,那么可以通过以下步骤获取相关信息:登录控制面板:首先,请登录到您的虚拟主机提供商提供的控制面板。通常,您可以在购买服务时收到的邮件中找到登录地址、用户名和密码。查找FTP信息:进入......
  • 如何迁移旧虚拟主机的数据到新购主机并完成域名绑定
    用户计划购买新的虚拟主机,并希望将现有主机上的所有数据迁移到新主机上,同时更新域名绑定,确保网站能够顺利切换到新主机上继续运行。解决方案准备迁移前的工作在购买新虚拟主机之前,先备份现有主机上的所有数据,包括但不限于网站文件、数据库内容以及邮件账户信息。确认新购主......
  • [docker教程]docker基础速成
    docker基本操作1.下载/卸载镜像[1]拉取最新版本的Nginx镜像:Bashdockerpullnginx拉取1.19版本的Nginx镜像:Bashdockerpullnginx:1.19拉取某个特定摘要的Nginx镜像(通常用于确保拉取到完全一致的镜像):dockerpullnginx@sha256:xxxxxxxxxxxxxxxxxxxxxxxx......
  • 浏览器内多个标签页之间的通信方式有哪些?
    浏览器内多个标签页之间的通信方式主要有以下几种:BroadcastChannelAPI:这是一种HTML5提供的跨页面通信机制,允许在同一个域名下的多个浏览器标签页之间进行实时的双向通信。通过创建一个BroadcastChannel对象并指定一个唯一的通道名称,不同的标签页就可以通过这个通道发送和接收......
  • docker安装eclipse-mosquito测试mqtt
    拉取镜像dockerpulleclipse-mosquitto创建目录mkdirmqttcdmqttmkdirconfigmkdirdatamkdirlog创建配置文件cdmqtt/configtouchmosquitto.conftouchpasswdvimmosquitto.conf点击查看代码listener1883persistencetruepersistence_location/mo......
  • 【无线通信】强化学习节能无线通信【含Matlab源码 10895期】
    ......