• 基于CentOs7使docker容器通过桥接模式被外部访问


    docker 桥接模式

    基础工具安装

    brxrl

    yum install bridge-utils
    
    • 1

    该命令相关用法可以参考 http://ipcmen.com/brctl

    pipework

    • 从github上下载
    cd /opt/
    git clone https://github.com/jpetazzo/pipework.git
    cp pipework/pipework /usr/bin/
    
    • 1
    • 2
    • 3

    创建网桥

    • 【步骤1,暂时不用执行】
      说明:有的设备需要执行该步骤才能被外网访问到,默认情况下无需加该步骤。
      该步骤的一个缺点是在启动容器时必须使用无网络模式(–net=none),否则会自动分配IP,该IP冲突后有可能导致宿主机断网而无法连接。(网络模式参见https://blog.csdn.net/iijik55/article/details/123871038)
    #停止docker服务
    systemctl stop docker;systemctl stop docker.socket;
    #删除docker0网卡,此命令永久生效,重启不会恢复
    ip link set dev docker0 down;(同ifdown docker0)
    brctl delbr docker0;(删除docker0网卡)
    #修改 /usr/lib/systemd/system/docker.service
    在ExecStart字段后添加 -b bridge0 参数
    #在执行完步骤2后,重新加载配置和启动服务
    systemctl daemon-reload
    systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 步骤2:将下述命令制作成脚本执行,通过ifconfig命令可以查看网卡信息或者通过brctl show命令查看所有网桥
    #添加网桥
    brctl addbr bridge0;
    #启动网桥
    ip link set dev bridge0 up;(作用同ifup bridge0)
    #删除已有网卡eth0的ip,此时ip被删掉会断网,所以需要把所有的命令放在一个脚本中执行
    ip addr del 192.168.1.100 dev eth0 ; 
    #分配ip和广播地址(使用刚才eth0删除的ip)
    ip addr add $ip dev bridge0; 
    #把eth0网卡接入到bridge0上,后续所有的请求都需要通过bridge0发给eth0
    brctl addif bridge0 eth0; 
    #给bridge0添加新的路由
    ip route add default via 192.168.1.1 dev bridge0;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    使用

    • 创建容器
      docker run -itd --name test ubuntu:16.04
    • 分配IP(ip/掩码@网关)
      pipework bridge0 test 192.168.1.100/24@192.168.1.1

    注意

    • 上述配置重启后恢复
    • 有些设备使用上述方式无效,那么可以再次尝试,加上述“【步骤1】”内的步骤
  • 相关阅读:
    GitLab 知识树(三):gitlab指定版本安装
    Unity_相机灵活跟随角色移动
    Parallels Desktop 20破解版(Mac虚拟机) v20.0.0 for Mac 最新商业版(支持M系列)
    Spring-IOC-Spring6和JUnit5集成
    Spring让读取和存储Bean更加简单(上篇)——使用注解储存Bean对象
    数据库经典笔试题
    Python零基础入门-9类
    操作系统权限提升(三十)之数据库提权-SQL Server sp_oacreate+sp_oamethod(dba权限)提权
    ESP32 Micropython编程(Thonny)02---- Wokwi仿真及数码管使用
    Hash(哈希)选做
  • 原文地址:https://blog.csdn.net/huangjiazhi_/article/details/128018664