code: func (daemon *Daemon) setDefaultIsolation() error {
  	daemon.defaultIsolation = containertypes.Isolation("process")
  	osv := system.GetOSVersion()
  
  	// On client SKUs, default to Hyper-V. @engine maintainers. This
  	// should not be removed. Ping @jhowardmsft is there are PRs to
  	// to change this.
  	if system.IsWindowsClient() {
  		daemon.defaultIsolation = containertypes.Isolation("hyperv")
  	}
  	for _, option := range daemon.configStore.ExecOptions {
  		key, val, err := parsers.ParseKeyValueOpt(option)
  		if err != nil {
  			return err
  		}
  		key = strings.ToLower(key)
  		switch key {
  
  		case "isolation":
  			if !containertypes.Isolation(val).IsValid() {
  				return fmt.Errorf("Invalid exec-opt value for 'isolation':'%s'", val)
  			}
  			if containertypes.Isolation(val).IsHyperV() {
  				daemon.defaultIsolation = containertypes.Isolation("hyperv")
  			}
  			if containertypes.Isolation(val).IsProcess() {
  				if system.IsWindowsClient() && osv.Build < 17763 {
  					// On RS5, we allow (but don't strictly support) process isolation on Client SKUs.
  					// @engine maintainers. This block should not be removed. It partially enforces licensing
  					// restrictions on Windows. Ping @jhowardmsft if there are concerns or PRs to change this.
  					return fmt.Errorf("Windows client operating systems earlier than version 1809 can only run Hyper-V containers")
  				}
  				daemon.defaultIsolation = containertypes.Isolation("process")
  			}
  		default:
  			return fmt.Errorf("Unrecognised exec-opt '%s'\n", key)
  		}
  	}
  
  	logrus.Infof("Windows default isolation mode: %s", daemon.defaultIsolation)
  	return nil
  }
docs: // setDefaultIsolation determine the default isolation mode for the
  // daemon to run in. This is only applicable on Windows