diff --git a/docker-build-cacher.cabal b/docker-build-cacher.cabal
--- a/docker-build-cacher.cabal
+++ b/docker-build-cacher.cabal
@@ -2,11 +2,11 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: bba2ebc1d94e53e264f8fc6617af435725332ab983d4665a9360298eed6f98e5
+-- hash: 307458352ac122d4179e82aba4f68459442bf1608564a04a683d50ff91ea2518
 
 name:           docker-build-cacher
-version:        2.1.0
-synopsis:       Builds a services with docker and caches all of its intermediate stages
+version:        2.1.1
+synopsis:       Builds a docker image and caches all of its intermediate stages
 description:    A CLI tool to speed up multi-stage docker file builds by caching intermediate
 category:       Operations
 homepage:       https://github.com/seatgeek/docker-build-cacher#readme
diff --git a/src/Docker/Cacher/Inspect.hs b/src/Docker/Cacher/Inspect.hs
--- a/src/Docker/Cacher/Inspect.hs
+++ b/src/Docker/Cacher/Inspect.hs
@@ -137,7 +137,13 @@
 shouldBustCache :: Stage SourceImage -> StageCache -> Shell StageCache
 shouldBustCache sourceStage cached@Cached {..} = do
   printLn ("----> Checking cache buster files for stage " % s) (stageName stage)
-  withContainer (buildImageName stage) checkFiles -- Create a container to inspect the files
+  result <- withContainer (buildImageName stage) checkFiles -- Create a container to inspect the files
+  case result of
+    Left _ -> do
+      err
+        "----> Could not create the container, impossible to inspect the cache"
+      return $ NotCached sourceStage
+    Right stCache -> return stCache
  where
   checkFiles containerId = do
     hasChanged <- fold
@@ -163,7 +169,10 @@
     if isDirectory fileStat
       then do
         printLn
-          ("------>'" % fp % "' is a directory, assuming files inside it changed")
+          ( "------>'"
+          % fp
+          % "' is a directory, assuming files inside it changed"
+          )
           file
         return $ Just file
       else do
@@ -297,12 +306,15 @@
 
 -- | Creates a container from a stage and passes the container id to the
 --   given shell as an argument
-withContainer :: ImageName a -> (Text -> Shell b) -> Shell b
+withContainer :: ImageName a -> (Text -> Shell b) -> Shell (Either Line b)
 withContainer (ImageName imageName) action = do
-  containerId <- inproc "docker" ["create", imageName] empty
-  result      <- fold (action (format l containerId)) Fold.list
-  _           <- removeContainer containerId -- Ignore the return code of this command
-  select result -- yield each result as a separate line
+  result <- inprocWithErr "docker" ["create", imageName, "sh"] empty
+  case result of
+    Left  errorMsg    -> return (Left errorMsg)
+    Right containerId -> do
+      res <- fold (action (format l containerId)) Fold.list
+      _   <- removeContainer containerId -- Ignore the return code of this command
+      select (map Right res) -- yield each result as a separate line
  where
   removeContainer containerId =
     proc "docker" ["rm", format l containerId] empty
