当前位置: 首页 > article >正文

实现在两台宿主机下的docker container 中实现多机器通讯

基于我的实验背景

上位机:ubuntu 20.04 (docker humble 22.04)
下位机:ubuntu 22.04(docker noetic 20.04)

目标:实现在上位机中的docker container 容器的22.04环境去成功远程访问 非同网段的下位机的20.04的container容器

具体的参考链接

参考连接
参考链接
参考链接
参考链接

实现流程

我的下位机再此命名为:sunrise
我的上位机在此命名为:zhaobojun
构建自定义网桥:目的是实现在不同网段的docker 通讯

构建网桥

zhaobojun

#创建网桥
docker network create --driver bridge --ipam-driver default --subnet 192.168.20.0/24 --gateway 192.168.20.1 docker-net-bridge
# 查看网桥
docker network ls 
3fc08758bacc   docker-net-bridge   bridge    local

sunrise

#创建网桥
docker network create --driver bridge --ipam-driver default --subnet 192.168.25.0/24 --gateway 192.168.25.1 docker-net-bridge

构建网桥能够避免修改docker 0 的默认固定的172.17.0.1的网段 我觉得有一定的好处

添加路由规则

zhaobojun

#上位机zhaobojun中添加下位机的路由规则(主机2的IP和网段)
route add -net 192.168.25.0/24 gw 192.168.31.67

sunrise

#创建网桥(在主机2中添加主机1的ip和网段)
route add -net 192.168.20.0/24 gw 192.168.31.105

参考防火墙规则
最终参考文章

添加防火墙规则

请添加图片描述

zhaobojun

#开启路由转发
iptables -P FORWARD ACCEPT

iptables -P FORWARD ACCEPT
iptables -A FORWARD -s 192.168.31.0/24 -j ACCEPT #允许下位机的网关 
#配置上位机zhaobojun的iptables规则
iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -d 192.168.25.0/24 -j MASQUERADE

sunrise

sudo route add -net 192.168.20.0/24  gw 192.168.31.105

sudo iptables -t nat -F POSTROUTING
sudo iptables -A FORWARD -s 192.168.31.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.25.0/24 -d 192.168.20.0/24 -j MASQUERADE

路由持久化

zhaobojun

sudo vim / etc/rc.local
route add -net 192.168.25.0/24 gw 192.168.31.105

sunrise

sudo vim / etc/rc.local
route add -net 192.168.20.0/24 gw 192.168.31.67

每个容器内部需要的net工具包

#安装测试工具
apt-get update
#安装ping工具
apt-get install inetutils-ping -y
#安装ip查看工具
apt-get install net-tools -y
#通过nmtui去配置网桥是很好的方法 ——推荐
sudo nmtui
然后添加网桥即可

zhaobojun
请添加图片描述sunrise
请添加图片描述最后成功通讯的结果

请添加图片描述
超宝藏博客

# 查看是否开启ip转发,如果为1则开启
 cat /proc/sys/net/ipv4/ip_forward

http://www.kler.cn/a/409521.html

相关文章:

  • Charles抓包工具-笔记
  • 【Spring Boot】# 使用@Scheduled注解无法执行定时任务
  • ShuffleNet V2:高效卷积神经网络架构设计的实用指南
  • 【视频】二维码识别:libzbar-dev、zbar-tools(zbarimg )
  • 调试器 gdb/cgdb 的使用
  • 《AI大模型开发笔记》Faster-Whisper 免费开源的高性能语音识别模型
  • 【前端】JavaScript 变量声明与函数提升例题分析:深入理解变量提升、作用域链与函数调用
  • meterpreter常用命令 下
  • 取石子游戏
  • L1G1000 书生大模型全链路开源开放体系笔记
  • Python中使用matplotlib绘制图像并填充满整个figure区域
  • iphone小程序设置burpsuite代理抓包
  • 深入FastAPI:表单和文件上传详解
  • 03-微服务搭建
  • HC-SR501 PIR传感器是如何工作的以及如何与ESP32接口的
  • 【GPT】长时间面对屏幕会导致想吃垃圾食品吗
  • Python 类和对象:详细讲解中篇
  • 详解Qt QStorageInfo 存储信息类
  • 健康之路走上IPO之路 百度演双重角色
  • JavaFX:简介、使用场景、常见问题及对比其他框架分析
  • 241124学习日志——[CSDIY] [ByteDance] 后端训练营 [14]
  • oracle会话追踪
  • 七天掌握SQL--->第五天:数据库安全与权限管理
  • java实现小程序接口返回Base64图片
  • MySQL面试-1
  • 李继刚:提示词(Prompt)的本质是表达的艺术