在一台宿主机上运行多个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 @ 2022-01-25 14:17  tangshow  阅读(668)  评论(0编辑  收藏  举报