在一台宿主机上运行多个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改变后连不上容器