docker with routed subnetz

Aloha,

mal wieder was zu docker, dieses mal mit gerouteten public subnetzen (weil’s geht)

umgebungs dingends

  • ubuntu 14.04 oder 16.04
  • docker 1.11.1
  • docker-compose

in die /etc/network/interfaces ein neues virtuelles device (oder hinter einer bridge, macht keinen unterschied)

auto eth0:1
  iface eth0:1 inet static
  address xyz.10.abc.def
  netmask 255.255.255.248
  broadcast xyz.10.abc.def

nun noch die docker-compose.yml

version: '2'
services:
  nginx:
    image: nginx:latest
    restart: always
    ports:
     - 443:443
    networks:
       - docker-subnet-1

networks:
  docker-subnet-1:
    driver: bridge
    driver_opts:
      com.docker.network.bridge.host_binding_ipv4: xyz.10.abc.def
      com.docker.network.bridge.enable_ip_masquerade: true
      com.docker.network.bridge.enable_icc: 

was das macht: 1) erstellt eine neues bridge interface 2) gibt diesem bridge interface ein privates 172.x/16 subnetz (normalerweise ein subnetz weiter als docker0) 3) legt alles was an dem “docker-subnetz-1” hängt dahinter als wäre es eine normale docker installation (mit eigenen docker iptables etc)