Execute docker commands with timeout

This commit is contained in:
bergware
2018-03-23 11:28:54 +01:00
parent 08dbf442eb
commit fbe5252618
4 changed files with 26 additions and 18 deletions
@@ -34,9 +34,9 @@ $DockerTemplates = new DockerTemplates();
$echo = function($m){echo "<pre>".print_r($m, true)."</pre>";};
unset($custom);
exec("docker network ls --filter driver='macvlan' --format='{{.Name}}'", $custom);
exec("timeout 20 docker network ls --filter driver='macvlan' --format='{{.Name}}' 2>/dev/null", $custom);
$subnet = ['bridge'=>'', 'host'=>'', 'none'=>''];
foreach ($custom as $network) $subnet[$network] = substr(exec("docker network inspect --format='{{range .IPAM.Config}}{{.Subnet}}, {{end}}' $network"),0,-1);
foreach ($custom as $network) $subnet[$network] = substr(docker("network inspect --format='{{range .IPAM.Config}}{{.Subnet}}, {{end}}' $network"),0,-1);
function stopContainer($name) {
global $DockerClient;
@@ -514,8 +514,8 @@ function getUsedPorts() {
foreach ($names as $name) {
$list = [];
$list['Name'] = $name;
$port = explode('|',exec("docker inspect --format='{{range \$c := .HostConfig.PortBindings}}{{(index \$c 0).HostPort}}|{{end}}' $name 2>/dev/null"));
if (count($port)<2) $port = explode('|',str_replace(['/tcp','/udp'],'',exec("docker inspect --format='{{range \$p,\$c := .Config.ExposedPorts}}{{\$p}}|{{end}}' $name 2>/dev/null")));
$port = explode('|',docker("inspect --format='{{range \$c := .HostConfig.PortBindings}}{{(index \$c 0).HostPort}}|{{end}}' $name"));
if (count($port)<2) $port = explode('|',str_replace(['/tcp','/udp'],'',docker("inspect --format='{{range \$p,\$c := .Config.ExposedPorts}}{{\$p}}|{{end}}' $name")));
natsort($port);
$list['Port'] = implode(' ',array_unique($port));
$ports[] = $list;
@@ -529,8 +529,8 @@ function getUsedIPs() {
foreach ($names as $name) {
$list = [];
$list['Name'] = $name;
$mode = exec("docker inspect --format='{{lower .HostConfig.NetworkMode}}' $name 2>/dev/null");
$list['ip'] = (exec("docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $name 2>/dev/null") ?: $eth0['IPADDR:0'])." ($mode)";
$mode = docker("inspect --format='{{lower .HostConfig.NetworkMode}}' $name");
$list['ip'] = (docker("inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $name") ?: $eth0['IPADDR:0'])." ($mode)";
$ips[] = $list;
}
return $ips;
@@ -747,7 +747,7 @@ if ($_GET['xmlTemplate']) {
echo "<script>var Settings=".json_encode($xml).";</script>";
}
}
exec("docker ps --format='{{.Names}}' 2>/dev/null",$names);
exec("timeout 20 docker ps --format='{{.Names}}' 2>/dev/null",$names);
echo "<script>var UsedPorts=".json_encode(getUsedPorts()).";</script>";
echo "<script>var UsedIPs=".json_encode(getUsedIPs()).";</script>";
$authoringMode = $dockercfg["DOCKER_AUTHORING_MODE"] == "yes" ? true : false;