diff --git a/plugins/dynamix.docker.manager/include/CreateDocker.php b/plugins/dynamix.docker.manager/include/CreateDocker.php index ebe910932..55e3addda 100644 --- a/plugins/dynamix.docker.manager/include/CreateDocker.php +++ b/plugins/dynamix.docker.manager/include/CreateDocker.php @@ -31,10 +31,8 @@ $DockerTemplates = new DockerTemplates(); $custom = DockerUtil::docker("network ls --filter driver='bridge' --filter driver='macvlan' --format='{{.Name}}'|grep -v '^bridge$'",true); $subnet = ['bridge'=>'', 'host'=>'', 'none'=>'']; -$driver = []; foreach ($custom as $network) $subnet[$network] = substr(DockerUtil::docker("network inspect --format='{{range .IPAM.Config}}{{.Subnet}}, {{end}}' $network"),0,-1); -foreach (DockerUtil::docker("network ls --format='{{.Name}}|{{.Driver}}'",true) as $network) {list($name,$type) = explode('|',$network); $driver[$name] = $type;} function stopContainer($name) { global $DockerClient; @@ -564,9 +562,7 @@ if (isset($_POST['contName'])) { // remove old template @unlink("$userTmplDir/my-$existing.xml"); } - if ($startContainer) { - $cmd = str_replace('/plugins/dynamix.docker.manager/scripts/docker create ', '/plugins/dynamix.docker.manager/scripts/docker run -d ', $cmd); - } + if ($startContainer) $cmd = str_replace('/docker create ', '/docker run -d ', $cmd); execCommand($cmd); echo '

'; goto END; diff --git a/plugins/dynamix.docker.manager/include/DockerClient.php b/plugins/dynamix.docker.manager/include/DockerClient.php index df0496652..1d6f20f35 100644 --- a/plugins/dynamix.docker.manager/include/DockerClient.php +++ b/plugins/dynamix.docker.manager/include/DockerClient.php @@ -31,9 +31,11 @@ $dockerManPaths = [ if (!isset($eth0)) extract(parse_ini_file("$docroot/state/network.ini",true)); $host = $eth0['IPADDR:0'] ?? '0.0.0.0'; +// get network drivers +$driver = DockerUtil::driver(); + // Docker configuration file - guaranteed to exist -$docker_cfgfile = '/boot/config/docker.cfg'; -$dockercfg = parse_ini_file($docker_cfgfile); +$dockercfg = parse_ini_file('/boot/config/docker.cfg'); ####################################### ## DOCKERTEMPLATES CLASS ## @@ -698,6 +700,7 @@ class DockerClient { } public function getDockerContainers() { + global $driver; // Return cached values if (is_array($this::$containersCache)) return $this::$containersCache; $this::$containersCache = []; @@ -717,7 +720,7 @@ class DockerClient { $c['NetworkMode'] = $ct['HostConfig']['NetworkMode']; $c['BaseImage'] = $ct['Labels']['BASEIMAGE'] ?? false; $c['Ports'] = []; - if (!empty($info['HostConfig']['PortBindings'])) { + if ($driver[$c['NetworkMode']]=='bridge') { $ports = &$info['HostConfig']['PortBindings']; $nat = true; } else { @@ -819,5 +822,10 @@ class DockerUtil { $ipaddr = $version==4 ? 'IPAddress' : 'GlobalIPv6Address'; return static::docker("inspect --format='{{range .NetworkSettings.Networks}}{{.$ipaddr}}{{end}}' $name"); } + public static function driver() { + $list = []; + foreach (static::docker("network ls --format='{{.Name}}={{.Driver}}'",true) as $network) {list($name,$driver) = explode('=',$network); $list[$name] = $driver;} + return $list; + } } ?> diff --git a/plugins/dynamix/Eth0.page b/plugins/dynamix/Eth0.page index c5286eeb2..de94cf087 100644 --- a/plugins/dynamix/Eth0.page +++ b/plugins/dynamix/Eth0.page @@ -556,6 +556,7 @@ IPv4 address assignment: