<?php
exec("docker images -aq", $res, $ret);
if ($ret!=0) {
  echo '  A [label="Error\nCannot get Docker Images"];';
  echo '  B [label="Does the Webserver have Docker rights?"];';
  echo '  A->B [label="Probable\nCause"];';
  return;
}
exec("docker inspect ".join(" ", $res), $res2, $ret);
if ($ret==0) {
  $images=json_decode(join($res2), true);

  foreach ($images as $i) {
    $name = "";
    if (isset($i['RepoTags']) && count($i['RepoTags'])>0) {
      $name = join("\\n", $i['RepoTags']);
      if (isset($i['Author']) && $i['Author']!="") $name .= '\\n['.$i['Author'].']';
      echo '  "'.$i['Id'].'" [label="'.$name.'"];'."\n";
    }
  }

  foreach ($images as $i) {
    if (isset($i['RepoTags']) && count($i['RepoTags'])>0) {
      for ($p = $i['Parent']; isset($p) && $p!="";) {
        $next = null;
        foreach ($images as $i2)
          if ($i2['Id'] == $p) {
            $next = $i2;
            break;
          }
        if (!$next) break;
        $p = $next['Parent'];
        if (isset($next['RepoTags']) && count($next['RepoTags'])>0) {
          echo '  "'.$next['Id'].'" -> "'.$i['Id'].'";'."\n";
          break;
        }
      }
    }
  }
  
} else {
  echo '  A [label="Error\nCannot Inspect Docker Container"];';
  return;
}

?>