ContainerIP no longer stringly-typed.
diff --git a/core/dispatcher/src/main/scala/whisk/core/container/ContainerUtils.scala b/core/dispatcher/src/main/scala/whisk/core/container/ContainerUtils.scala
index 471eac8..b975676 100644
--- a/core/dispatcher/src/main/scala/whisk/core/container/ContainerUtils.scala
+++ b/core/dispatcher/src/main/scala/whisk/core/container/ContainerUtils.scala
@@ -49,7 +49,7 @@
      * @param image the docker image to run
      * @return container id and container host
      */
-    def bringup(name: Option[String], image: String, network: String, cpuShare:Int, env: Map[String, String], args: Array[String], limits: ActionLimits, policy: Option[String])(implicit transid: TransactionId): (ContainerId, ContainerIP) = {
+    def bringup(name: Option[String], image: String, network: String, cpuShare: Int, env: Map[String, String], args: Array[String], limits: ActionLimits, policy: Option[String])(implicit transid: TransactionId): (ContainerId, Option[ContainerAddr]) = {
         val id = makeContainer(name, image, network, cpuShare, env, args, limits, policy)
         val host = id.flatMap(_ => getContainerHostAndPort(name))
         (id, host)
@@ -155,12 +155,13 @@
 
     }
 
-    def getContainerHostAndPort(container: ContainerName)(implicit transid: TransactionId): ContainerIP = {
-        container map { name =>
-            runDockerCmd("inspect", "--format", "'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'", name) map {
-                output => appendPort(output.substring(1, output.length - 1))
-            }
-        } getOrElse None
+    def getContainerHostAndPort(container: ContainerName)(implicit transid: TransactionId): Option[ContainerAddr] = {
+        for (
+            name <- container;
+            output <- runDockerCmd("inspect", "--format", "'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'", name)
+        ) yield {
+            ContainerAddr(output.substring(1, output.length - 1), 8080)
+        }
     }
 
     def runDockerCmd(args: String*)(implicit transid: TransactionId): DockerOutput = runDockerCmd(false, args)
@@ -189,8 +190,6 @@
         val tokens = line.split("\\s+")
         ContainerState(tokens(0), tokens(1), tokens(tokens.length - 1))
     }
-
-    protected def appendPort(host: String) = s"$host:8080"
 }
 
 object ContainerUtils extends Logging {
diff --git a/core/dispatcher/src/main/scala/whisk/core/container/WhiskContainer.scala b/core/dispatcher/src/main/scala/whisk/core/container/WhiskContainer.scala
index 50dde63..eaf5a8e 100644
--- a/core/dispatcher/src/main/scala/whisk/core/container/WhiskContainer.scala
+++ b/core/dispatcher/src/main/scala/whisk/core/container/WhiskContainer.scala
@@ -154,14 +154,12 @@
         implicit val materializer = ActorMaterializer()
 
         containerHostAndPort map { hp =>
-            val host = hp.split(":")(0)
-            val port = hp.split(":")(1).toInt
 
-            val flow = Http().outgoingConnection(host, port)
+            val flow = Http().outgoingConnection(hp.host, hp.port)
 
             val uri = Uri(
                 scheme = "http",
-                authority = Uri.Authority(host = Uri.Host(host), port = port),
+                authority = Uri.Authority(host = Uri.Host(hp.host), port = hp.port),
                 path = Uri.Path(endpoint))
 
             for (
diff --git a/core/dispatcher/src/main/scala/whisk/core/container/package.scala b/core/dispatcher/src/main/scala/whisk/core/container/package.scala
index 3b053fa..4161c00 100644
--- a/core/dispatcher/src/main/scala/whisk/core/container/package.scala
+++ b/core/dispatcher/src/main/scala/whisk/core/container/package.scala
@@ -77,8 +77,15 @@
     case object Busy extends FinalContainerResult
     case class Error(string: String) extends FinalContainerResult
 
+    // Note: not using InetAddress here because we don't want to do any lookup
+    // until used for something.
+    case class ContainerAddr(host: String, port: Int) {
+        override def toString() = s"$host:$port"
+    }
+
     type ContainerName = Option[String]
+
     type ContainerId = Option[String]
-    type ContainerIP = Option[String]
+
     type DockerOutput = Option[String]
 }