#!/bin/bash

main ()
  {
  # List all Docker networks
  networks=$(docker network ls -q --format '{{.Name}},{{.ID}}' | sort | cut -d, -f 2)

  # Loop through the networks and display the details
  for network in $networks; do
      local containers=$(docker network inspect --format='{{range $k, $v := .Containers}}{{$k}} {{end}}' "$network")
      local net_name=$(docker network inspect --format '{{ .Name }}' $network)

      printf "%-30s %s\n"  "$net_name" "$network"
      for container in $containers; do
          local cont=$(docker network inspect --format="{{ index .Containers \"$container\" | json }}" "$network" )
          local name=$(jq -r ".Name" <<< "$cont")
          local ip=$(jq -r ".IPv4Address" <<< "$cont")
          printf "  %-30s %s\n" "$ip" "$name"

      done
  done

}

main $@

