dockerman 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/sh /etc/rc.common
  2. START=99
  3. DOCKERD_CONF="/etc/docker/daemon.json"
  4. config_load dockerman
  5. config_get daemon_ea "local" daemon_ea
  6. init_dockerman_chain(){
  7. iptables -N DOCKER-MAN >/dev/null 2>&1
  8. iptables -F DOCKER-MAN >/dev/null 2>&1
  9. iptables -D DOCKER-USER -j DOCKER-MAN >/dev/null 2>&1
  10. iptables -I DOCKER-USER -j DOCKER-MAN >/dev/null 2>&1
  11. }
  12. add_allowed_interface(){
  13. iptables -A DOCKER-MAN -i $1 -o docker0 -j RETURN
  14. }
  15. add_allowed_ip(){
  16. iptables -A DOCKER-MAN -d $1 -o docker0 -j RETURN
  17. }
  18. handle_allowed_interface(){
  19. #config_list_foreach "local" allowed_ip add_allowed_ip
  20. config_list_foreach "local" ac_allowed_interface add_allowed_interface
  21. iptables -A DOCKER-MAN -m conntrack --ctstate ESTABLISHED,RELATED -o docker0 -j RETURN >/dev/null 2>&1
  22. iptables -A DOCKER-MAN -m conntrack --ctstate NEW,INVALID -o docker0 -j DROP >/dev/null 2>&1
  23. iptables -A DOCKER-MAN -j RETURN >/dev/null 2>&1
  24. }
  25. start(){
  26. [ ! -x "/etc/init.d/dockerd" ] && return 0
  27. init_dockerman_chain
  28. if [ -n "$daemon_ea" ]; then
  29. handle_allowed_interface
  30. lua /usr/share/dockerman/dockerd-config.lua "$DOCKERD_CONF" && /etc/init.d/dockerd restart && sleep 5 || {
  31. # 1 running, 0 stopped
  32. STATE=$([ -n "$(ps |grep /usr/bin/dockerd | grep -v grep)" ] && echo 1 || echo 0)
  33. [ "$STATE" == "0" ] && /etc/init.d/dockerd start && sleep 5
  34. }
  35. lua /usr/share/dockerman/dockerd-ac.lua
  36. else
  37. /etc/init.d/dockerd stop
  38. fi
  39. }