在一台宿主机上运行多个docker容器,并且自动给容器分配和宿主机同网段的局域网ip

需求

在一台宿主机上运行多个docker容器,并且自动给容器分配和宿主机同网段的局域网ip

环境

centos7、docker 、python2.7.x、pipework
centos7直连路由器,且该网段内还有未分配的ip

一 新建 python脚本 /root/cron/docker_net.py

源码见另一博客随笔docker_net.py

二 新建 centos7系统服务

    echo '[Unit]' >> /usr/lib/systemd/system/dockernet.service
    echo 'Description=Python Service' >> /usr/lib/systemd/system/dockernet.service
    echo 'After=multi-user.target' >> /usr/lib/systemd/system/dockernet.service
    echo '[Service]' >> /usr/lib/systemd/system/dockernet.service
    echo 'WorkingDirectory=/root/cron' >> /usr/lib/systemd/system/dockernet.service
    echo 'User=root' >> /usr/lib/systemd/system/dockernet.service
    echo 'Type=idle' >> /usr/lib/systemd/system/dockernet.service
    echo 'ExecStart=/usr/bin/python -u /root/cron/docker_net.py' >> /usr/lib/systemd/system/dockernet.service
    echo 'Restart=always' >> /usr/lib/systemd/system/dockernet.service
    echo '[Install]' >> /usr/lib/systemd/system/dockernet.service
    echo 'WantedBy=multi-user.target' >> /usr/lib/systemd/system/dockernet.service

三 新建手动检查脚本,便于检查

vim show_dockerip.sh

  #!/bin/bash
  # 显示宿主机防火墙配置,和docker容器分配到的ip

  echo "firewall————————————————————————"
  firewall-cmd --list-forward-ports

  echo "docker ip ——————————————————————"
  /usr/bin/docker exec -t -i  in1 sh -c 'ip addr' |grep 'inet 192'
  /usr/bin/docker exec -t -i  in2 sh -c 'ip addr' |grep 'inet 192'
  /usr/bin/docker exec -t -i  in3 sh -c 'ip addr' |grep 'inet 192'
  /usr/bin/docker exec -t -i  in4 sh -c 'ip addr' |grep 'inet 192'

四 运行服务

systemctl start dockernet
systemctl enable dockernet
systemctl status dockernet

查看服务日志
journalctl -f

查看防火墙配置和容器ip
show_dockerip.sh
#此处防火墙配置用于绑定主机端口到容器上,做管理用,避免容器ip改变后连不上容器

posted @   tangshow  阅读(706)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示