Use Either.toOption and prettify escaped strings in ContainerFactories. (#4738)

diff --git a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala
index 835893b..61a456a 100644
--- a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala
+++ b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/StandaloneDockerContainerFactory.scala
@@ -98,8 +98,8 @@
   self: DockerClient =>
 
   override protected def executableAlternatives: List[String] = {
-    val executable = loadConfig[String]("whisk.docker.executable").map(Some(_)).getOrElse(None)
-    List(Some("C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe"), executable).flatten
+    val executable = loadConfig[String]("whisk.docker.executable").toOption
+    List("""C:\Program Files\Docker\Docker\resources\bin\docker.exe""") ++ executable
   }
 }
 
@@ -110,5 +110,5 @@
     with WindowsDockerClient {
   //Due to some Docker + Windows + Go parsing quirks need to add double quotes around whole command
   //See https://github.com/moby/moby/issues/27592#issuecomment-255227097
-  override def inspectCommand: String = "\"{{(index (index .NetworkSettings.Ports \\\"8080/tcp\\\") 0).HostPort}}\""
+  override def inspectCommand: String = """"{{(index (index .NetworkSettings.Ports \"8080/tcp\") 0).HostPort}}""""
 }
diff --git a/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala b/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala
index d8ca898..79716d7 100644
--- a/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala
+++ b/core/standalone/src/main/scala/org/apache/openwhisk/standalone/StandaloneDockerSupport.scala
@@ -170,9 +170,9 @@
 
   private lazy val dockerCmd = {
     //TODO Logic duplicated from DockerClient and WindowsDockerClient for now
-    val executable = loadConfig[String]("whisk.docker.executable").map(Some(_)).getOrElse(None)
+    val executable = loadConfig[String]("whisk.docker.executable").toOption
     val alternatives =
-      List("/usr/bin/docker", "/usr/local/bin/docker", "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe") ++ executable
+      List("/usr/bin/docker", "/usr/local/bin/docker", """C:\Program Files\Docker\Docker\resources\bin\docker.exe""") ++ executable
     Try {
       alternatives.find(a => Files.isExecutable(Paths.get(a))).get
     } getOrElse {