instruction: Create a comprehensive Dockerfile for networking applications with best practices
output: ```dockerfile
  from 2001:db8:abc2::1%eth0: icmp_seq=1 ttl=64 time=0.058 ms
  
  2 packets transmitted, 2 packets received, 0% packet loss
  round-trip min/avg/max/stddev = 0.044/0.051/0.058/0.000 ms
  The next example with setup a dual stack IPv4/IPv6 network with an example
  VLAN ID of 140.Next create a network with two IPv4 subnets and one IPv6 subnets, all of which
  have explicit gateways:
  
  $ docker network create -d ipvlan \
   --subnet=192.168.140.0/24 --subnet=192.168.142.0/24 \
   --gateway=192.168.140.1 --gateway=192.168.142.1 \
   --subnet=2001:db8:abc9::/64 --gateway=2001:db8:abc9::22 \
   -o parent=eth0.140 \
   -o ipvlan_mode=l2 ipvlan140
  Start a container and view eth0 and both v4 & v6 routing tables:
  
  $ docker run --net=ipvlan140 --ip6=2001:db8:abc2::51 -it --rm alpine /bin/sh
  
  $ ip a show eth0
  78: eth0@if77: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
   link/ether 00:50:56:2b:29:40 brd ff:ff:ff:ff:ff:ff
   inet 192.168.140.2/24 scope global eth0
   valid_lft forever preferred_lft forever
   inet6 2001:db8:abc4::250:56ff:fe2b:2940/64 scope link
   valid_lft forever preferred_lft forever
   inet6 2001:db8:abc9::1/64 scope link nodad
   valid_lft forever preferred_lft forever
  
  $$ ip route
  default via 192.168.140.1 dev eth0
  192.168.140.0/24 dev eth0 proto kernel scope link src 192.168.140.2
  
  $$ ip -6 route
  2001:db8:abc4::/64 dev eth0 proto kernel metric 256
  2001:db8:abc9::/64 dev eth0 proto kernel metric 256
  default via 2001:db8:abc9::22 dev eth0 metric 1024
  Start a second container with a specific --ip4 address and ping the first host
  using IPv4 packets:
  
  $ docker run --net=ipvlan140 --ip=192.168.140.10 -it --rm alpine /bin/sh
  
  NoteDifferent subnets on the same parent interface in IPvlan L2 mode cannot ping
  one another. That requires a router to proxy-arp the requests with a secondary
  subnet. However, IPvlan L3 will route the unicast traffic between disparate
  subnets as long as they share the same -o parent parent link.Dual stack IPv4 IPv6 IPvlan L3 modeExample: IPvlan L3 Mode Dual Stack IPv4/IPv6, Multi-Subnet w/ 802.1Q VLAN Tag:118As in all of the examples, a tagged VLAN interface does not have to be used. The
  sub-interfaces can be swapped with eth0, eth1, bond0 or any other valid
  interface on the host other then the lo loopback.The primary difference you will see is that L3 mode does not create a default
  route with a next-hop but rather sets a default route pointing to dev eth only
  since ARP/Broadcasts/Multicast are all filtered by Linux as per the design. Since
  the parent interface is essentially acting as a router, the parent interface IP
  and subnet needs to be different
  ```