OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

这篇具有很好参考价值的文章主要介绍了OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenWRT 中使用创建docker Openwrt和其他宿主机中的docker容器通信

网络拓扑

首先网络得支持多拨,否则没有意义,之所以这么折腾,是因为直接OpenWRT多拨的情况下,网心云从原先的映射公网型变成全锥型
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

openwrt主路由,
cpu:Intel® Celeron® CPU J1900 @ 1.99GHz
内存:4G
网口:6口intel I211 千兆网口
原先计划是PVE,然后跑4个OpenWRT虚拟机,然而带不动,基本一天死机一回

后面改成现在这种模式:
局域网上网只用了0口和1口,有多余的网口用于docker openwrt
pve虚拟机跑docker 网心云
局域网划分了4个网段
192.168.1.0/25 网关192.168.1.126
192.168.1.160/27 网关192.168.1.190
192.168.1.192/27 网关192.168.1.222
192.168.1.224/27 网关192.168.1.254

一、准备

1、openwrt镜像,

可以根据下面这个去扩容,原始镜像的软件空间太小了,版本自己下载最新的
https://blog.csdn.net/yuanmingming521/article/details/126741073

2、安装pve

网上超多教程,这里就不写了
替换国内的源

 vi /etc/apt/sources.list
 #把其余的注释掉
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free 
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free 
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free 
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

删除PVE企业源

vi /etc/apt/sources.list.d/pve-enterprise.list
#注释掉
#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise

安装docker

apt update
apt install docker.io

二、PVE配置

1、网络配置

登录pve
https://ip:8006
创建linux bridge
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

2、创建docker network

登录PVE后台,创建macvlan

docker network create -d macvlan --subnet=192.168.1.160/27 --gateway=192.168.1.190 -o parent=vmbr1 -o macvlan_mode=bridge net190


root@:~# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
110ea0f854dc   bridge    bridge    local
74e0f19ab3a1   host      host      local
dc7b6ee9f6c1   net190    macvlan   local
3078d2dcba7c   net222    macvlan   local
0cf90f04cffa   net254    macvlan   local
4de979658c7e   netlan    macvlan   local
3f03cc1590b4   netwan    macvlan   local
d861ece9492e   none      null      local
root@:~# 

三、OpenWRT配置

1、登录openwrt,在网络–>接口–>设备,添加设备配置

设备类型:选择maclan
基设备:选择对应的物理网口
模式:桥接(允许mac vlan间直接通信)
其余默认
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

2、配置接口ip

网络–>接口–>添加新接口
名称:br2(方便记忆,第二个网口)
协议:静态IP或者不配置协议,我这里选择的静态ip
注意地址不要配置成网段的第一个可用ip,包括后面建立容器也一样,不要使用第一个可用的ip
设备:选择对应的接口
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

点击创建接口,配置相应网段的空闲ip,wan口的macvlan 不配置ip

OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信
最后保存并应用

根据上面的步骤创建其余的接口

3、创建docker network

登录openwrt后台,创建网络

docker network create -d macvlan --subnet=192.168.1.160/27 --gateway=192.168.1.190 -o parent=eth2mac0 -o macvlan_mode=bridge net190
#下面这个网段随便配置的
docker network create -d macvlan --subnet=192.168.100.0/24 --gateway=192.168.100.254 -o parent=eth1mac0 -o macvlan_mode=bridge netwan

eth2mac0 这个是连接pve的网口
eth1mac0 这是连接光猫的网口

4、创建docker OpenWRT

docker run --name op190 -d --network net190  --restart=always --privileged garethwang/openwrt-22.03.2-x86-64  /sbin/init

docker network connect netwan op190

5、修改OpenWRT的配置

5.1、修改docker openwrt的lan口ip
docker exec -it op190 sh

vi /etc/config/network

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.190' 
        option netmask '255.255.255.224'
        option ip6assign '60'

ctrl+d 

docker restart op190
5.2、登录docker op190 配置网络和安装软件

docker和宿主机是可以ping通的,但是电脑和docker在不同网段,ping不通,用xshell或者securecrt 登录到openwrt主路由后,再跳转,
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信
网页输入 127.0.0.1:2555,密码是password
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信
配置pppoe拨号上网
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

5.3、安装必要的软件

修改opkg 源
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信
将上面位置的配置替换成如下的配置

src/gz openwrt_core https://mirrors.aliyun.com//openwrt/releases/22.03.2/targets/x86/64/packages/
src/gz openwrt_base  https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/base/  
src/gz openwrt_luci https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/luci/
src/gz openwrt_packages https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/packages/
src/gz openwrt_routing https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/routing/
src/gz openwrt_telephony https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/telephony

然后安装luci-i18n-base-zh-cn和luci-i18n-upnp-zh-cn,其他也不需要了

四、测试

在pve主机中创建容器

docker run -dit --name=wxy162 --net=net190 --ip=192.168.1.162 --privileged=true --tmpfs /run --tmpfs /tmp -v /mnt/wxy4/wxy4:/storage:rw     registry.hub.docker.com/onething1/wxedge

进入docker openwrt 去pingpve中的容器地址

root@OPHOME:~# docker exec -it op190 sh


BusyBox v1.35.0 (2022-10-14 22:44:41 UTC) built-in shell (ash)

/ # ping 192.168.1.162
PING 192.168.1.162 (192.168.20.162): 56 data bytes
64 bytes from 192.168.1.162: seq=0 ttl=64 time=0.571 ms
64 bytes from 192.168.1.162: seq=1 ttl=64 time=0.450 ms
64 bytes from 192.168.1.162: seq=2 ttl=64 time=0.449 ms
64 bytes from 192.168.1.162: seq=3 ttl=64 time=0.680 ms
^C
--- 192.168.1.162 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.449/0.537/0.680 ms
/ # 

五、最终结果

OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信
OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信文章来源地址https://www.toymoban.com/news/detail-473886.html

到了这里,关于OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker使用宿主机代理

    我是在ubuntu虚拟机里面装的docker,尝试过docker里面装clash,但是失败了。使用上面的方法,docker容器内可以ping通github.com。ALL_PROXY里面的端口号因人而异。 docker 容器内使用宿主机的代理配置 | Zach Ke\\\'s Notes (kebingzao.com)

    2024年02月16日
    浏览(61)
  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(43)
  • Docker容器内执行宿主机指令

            最近项目有个需求,需要程序配置服务器IP并且可以重启服务器。如果程序直接部署在服务器,相信大家都会操作。但是程序是用docker运行的,在docker中执行指令就很麻烦了。这时候需要添加容器一些特殊的权限和执行一些特殊的命令就可以执行宿主机上面的指令

    2024年02月09日
    浏览(56)
  • Jenkins容器使用宿主机Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: 添加数据卷

    2024年01月18日
    浏览(50)
  • docker与宿主机共享内存通信

    docker中的进程要与宿主机使用共享内存通信,需要在启动容器的时候指定 “–ipc=host” 选项。然后再编写相应的共享内存的程序,一个跑在宿主机上,另一个跑在docker上面。 shm_data.h shm_slave.c makefile shm_data.h shm_master.c makefile Dockerfile 运行时需要先下载docker,获取支持c语言编译

    2024年02月07日
    浏览(46)
  • docker 容器与宿主机时间同步

    1.docker run 2.Docker file 3.docker-compose 4.宿主机直接执行命令给某个容器同步时间 注意:这种方式需要重启容器 docker exec -it 70ec41893d66 /bin/bash 回车后输入date验证即可

    2024年02月08日
    浏览(55)
  • Docker挂载-宿主机软连接目录-问题

    挂载宿主机软连接的路径问题【 -v /usr/local/nginx/:/home/test/nginx/ 】,软连接可以映射任何路径,但有一个前提是:其所映射的路径必须要在容器中存在,否则就无法访问到数据 1、如果软连接路径在容器中已经存在,如 /root/home ,或者在当前挂载命令 -v 前面的 -v 命令已经将软

    2024年02月22日
    浏览(59)
  • docker容器共享宿主机环境(目录挂载)

    一、背景介绍 如果开发的服务均需要将打成docker镜像,可是随着服务越来越多,镜像也越来越多。每次制作镜像的时候都需要将依赖打进容器,这样一个jre的环境就是100多M。有一天突发奇想,容器能不能共用宿主机的环境?这样每次打镜像时体积就会少不少。 二、测试 我们

    2024年02月09日
    浏览(62)
  • Jenkins(Docker版)中使用宿主机的Docker

    (1)宿主机安装好了Docker。 (2)宿主机拉取Jenkins的最新镜像。 使用Jenkins将打包好的镜像推送到远程镜像仓库时,运行docker login命令的时候,控制台报错:docker command not found。 Jenkins容器内部并没有安装Docker,但是我不想在内部再安装一个Docker,而是想直接使用使用宿主机

    2024年02月12日
    浏览(40)
  • docker 容器无法通过 IP 访问宿主机

    一次部署项目过程中,将Java项目与中间件服务部署在同一远程机器上,出现连接不上中间件服务的问题,而项目在本地运行时是可以连接的,没有问题。 这是因为项目与服务都是通过docker容器运行的,而docker 容器无法通过 IP 访问宿主机(貌似高版本解决了这个问题),所以

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包