Menu="OtherSettings" Title="Docker" Icon="icon-docker" Tag="icon-docker" --- Your existing Docker image file needs to be recreated due to an issue from an earlier beta of Unraid 6. Failure to do so may result in your docker image suffering corruption at a later time. Please do this NOW!

'; } } } unset($custom,$other); exec("ls --indicator-style=none /sys/class/net|grep -P '^br[0-9]'",$custom); exec("ls --indicator-style=none /sys/class/net|grep -P '^(bond|eth)[0-9]'",$other); $slaves = []; foreach ($other as $network) { if (substr($network,0,4)=='bond') { $br = str_replace('bond','br',$network); $bond = "/sys/class/net/$network/bonding/slaves"; if (file_exists($bond)) $slaves = array_merge($slaves,explode(' ',str_replace("\n","",file_get_contents($bond)))); if (!in_array($br,$custom)) $custom[] = $network; } else { $br = str_replace('eth','br',$network); $bond = str_replace('eth','bond',$network); if (!in_array($br,$custom) && !in_array($bond,$custom)) $custom[] = $network; } } $include = $include6 = $address = $address6 = $gateway = $gateway6 = $unset = $protocol = []; foreach ($custom as $network) { if (in_array($network,$slaves)) continue; $ip4 = exec("ip -4 addr show $network|awk '/inet /{print $2}'"); $ip6 = exec("ip -6 addr show $network noprefixroute|awk '/inet6 /{print $2}'"); $ip6 = $ip6 ?: exec("ip -6 addr show $network scope global permanent|awk '/inet6 /{print $2}'"); $gw4 = exec("ip -4 route show dev $network default|awk '{print $3}'"); $gw6 = exec("ip -6 route show dev $network default|awk '{print $3}'"); $route4 = exec("ip -4 route show dev $network $ip4|awk '{print $1}'"); $route6 = exec("ip -6 route show dev $network $ip6|awk '{print $1}'"); list($eth,$vlan) = explode('.',$network); $eth = str_replace(['bond','br'],'eth',$eth); if (!$vlan) { $protocol[$network] = $$eth['PROTOCOL:0'] ?? 'ipv4'; } else { foreach ($$eth as $key => $value) if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol[$network] = $$eth[str_replace('VLANID','PROTOCOL',$key)] ?? 'ipv4'; break;} } if ($ip4 && $route4) { $include[$network] = $route4; $address[$network] = $ip4; $gateway[$network] = $gw4; } elseif (!array_key_exists($network,$gateway6)) { $unset[] = $network; } if ($ip6 && $route6) { $include6[$network] = $route6; $address6[$network] = $ip6; $gateway6[$network] = $gw6; } elseif (!array_key_exists($network,$gateway)) { $unset[] = $network; } if ($protocol[$network] != 'ipv4') $wide = true; } $ip4class = $wide ? 'ip6' : 'ip4'; $gw4class = $wide ? 'gw6' : 'gw4'; $unset = array_unique($unset); function normalize($network) { return strtoupper(str_replace('.','_',$network)); } function base_min($route) { list($net,$mask) = explode('/',$route); $mask = 32-$mask; return explode('.',long2ip((ip2long($net)>>$mask)<<$mask)); } function base_max($route) { list($net,$mask) = explode('/',$route); $mask = 32-$mask; return explode('.',long2ip(((ip2long($net)>>$mask)<<$mask)+pow(2,$mask)-1)); } function base_net($route) { return substr(explode('/',$route)[0],0,-2); } $bgcolor = strstr('white,azure',$display['theme']) ? '#f2f2f2' : '#1c1c1c'; ?>
Enable Docker: : One or more paths do not exist (view) > Before you can start the Docker service for the first time, please specify an image file for Docker to install to. > > Once started, Docker will always automatically start after the array has been started. Docker vDisk size: : GB > If the system needs to create a new docker image file, this is the default size to use specified in GB. > > To resize an existing image file, specify the new size here. Next time the Docker service is started the file (and file system) will increased to the new size (but never decreased). Docker vDisk location: : Modify with caution: unable to validate path until Array is Started Path does not exist > You must specify an image file for Docker. The system will automatically create this file when the Docker service is first started. > > It is recommended to create this image file outside the array, e.g. on the Cache pool. For best performance SSD devices are preferred. Default appdata storage location: : Modify with caution: unable to validate path until Array is Started Path does not exist > You can specify a folder to automatically generate and store subfolders containing configuration files for each Docker app (via the /config mapped volume). > > It is recommended to create this folder outside the array, e.g. on the Cache pool. For best performance SSD devices are preferred. > > Only used when adding new Docker apps. Editing existing Docker apps will not be affected by this setting.
Docker LOG rotation: : > By default LOG rotation is disabled and will create a single LOG file of unlimited size. > > Enable LOG rotation to limit the size of the LOG file and specify the number of files to keep in the rotation scheme. Template Authoring Mode: : > If set to **Yes**, when creating/editing containers the interface will be present with some extra fields related to template authoring. Preserve user defined networks: : > User created networks are networks created by the user outside of the GUI.
> By default user created networks are removed from Docker. This is done to prevent potential conflicts with the automatic generation of custom networks. > > Change this setting to preserve user defined networks, but it is the responsibility of the user to ensure these entries work correctly and are conflict free. $route):?> IPv4 custom network on interface (optional): : > **Subnet:** **Gateway:** > **DHCP pool:**. "; for ($n=$net[$b]; $n<=$max[$b]; $n++) echo mk_option($net_user[$b],$n,$n,$n%$step==0?'':'class="hide"'); echo ""; } echo "/ "; echo "($size hosts)"; echo ""; ?> > Include (default) or exclude the above interfaces or VLANs as custom network for Docker. > > Enter the pool range within each allocated subnet which is used for DHCPv4 assignments by Docker. E.g. 192.168.1.128/25 IPv4 custom network on interface (optional): : > **Subnet:** >/ **Gateway:** " title="IPv4 address A.B.C.D"> > **DHCP pool:** >/ ( hosts) > Include or exclude (default) the above interfaces or VLANs as custom network for Docker. > > Enter the pool range within each allocated subnet which is used for DHCPv4 assignments by Docker. E.g. 192.168.1.128/25
$route):?> IPv6 custom network on interface (optional): : > **Subnet:** **Gateway:** > **DHCP pool:**: / "; echo ""; ?> > Include (default) or exclude the above interfaces or VLANs as custom network for Docker. > > Enter the pool range within each allocated subnet which is used for DHCPv6 assignments by Docker. E.g. 2a02:abcd:9ef5:100:1::/72 IPv6 custom network on interface (optional): : > **Subnet:**>/ **Gateway:**" title="IPv6 address nnnn:xxxx::yyyy"> > **DHCP pool:**>/ > Include or exclude (default) the above interfaces or VLANs as custom network for Docker. > > Enter the pool range within each allocated subnet which is used for DHCPv6 assignments by Docker. E.g. 2a02:abcd:9ef5:100:1::/72
Docker version: : getInfo(); echo $arrInfo['Version']?> > This is the Docker version. Docker vDisk location: : > This is the location of the Docker image. Default appdata storage location: : > This is the storage location for Docker containers.
Docker LOG rotation: : > By default a single unlimited LOG file is created. Otherwise LOG file size and number of files are limited when LOG rotation is enabled. Preserve user defined networks: : > Shows whether networks created outside of the GUI are removed or preserved for Docker. When preserved *user defined networks* become available in the *Network type* dropdown list of containers. $route):?> IPv4 custom network on interface : : **Subnet:** **Gateway:** **DHCP pool:**   ( hosts) $value) { if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = $$eth[str_replace('VLANID','PROTOCOL',$key)] ?? 'ipv4'; break;} } } list($subnet,$mask) = explode('/',$dockercfg["DOCKER_SUBNET_$port"]); list($range,$size) = explode('/',$dockercfg["DOCKER_RANGE_$port"]); ?> IPv4 custom network on interface : : **Subnet:** / **Gateway:** **DHCP pool:**   ( hosts) $route):?> IPv6 custom network on interface : : **Subnet:** **Gateway:** **DHCP pool:** $value) { if (strpos($key,'VLANID')!==false && $value==$vlan) {$protocol = $$eth[str_replace('VLANID','PROTOCOL',$key)] ?? 'ipv4'; break;} } } list($subnet6,$mask6) = explode('/',$dockercfg["DOCKER_SUBNET6_$port"]); list($range6,$size6) = explode('/',$dockercfg["DOCKER_RANGE6_$port"]); ?> IPv6 custom network on interface : : **Subnet:** / **Gateway:** **DHCP pool:**
  :
Docker volume info
btrfs filesystem show: : ".shell_exec("btrfs filesystem show /var/lib/docker").""?>
btrfs scrub status: : ".implode("\n", $scrub_status).""?>   : > **Scrub** runs the *btrfs scrub* program to check file system integrity. > > If repair is needed you should check the *Correct file system errors* and run a second Scrub pass; this will permit *btrfs scrub* to fix the file system.   : *Running* > **Cancel** will cancel the Scrub operation in progress.