在一台宿主机上运行多个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改变后连不上容器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)