diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 086f025..70c62ea 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -2009,7 +2009,7 @@ function _drupal_bootstrap_configuration() {
 function _drupal_bootstrap_kernel() {
   // Normally, index.php puts a container in the Drupal class by creating a
   // kernel. If there is no container yet, create one.
-  if (!\Drupal::getContainer()) {
+  if (!\Drupal::getContainer(TRUE)) {
     $kernel = new DrupalKernel('prod', drupal_classloader());
     $kernel->boot();
     $request = Request::createFromGlobals();
diff --git a/core/lib/Drupal.php b/core/lib/Drupal.php
index 5441e30..25e441f 100644
--- a/core/lib/Drupal.php
+++ b/core/lib/Drupal.php
@@ -109,9 +109,16 @@ public static function setContainer(ContainerInterface $container) {
    * @deprecated This method is only useful for the testing environment, and as
    *   a BC shiv for drupal_container(). It should not be used otherwise.
    *
+   * @param $check_only
+   *   TRUE when the return value of this function will not be used as an
+   *   object, ie. when it is called only to verify the container exists.
+   *
    * @return \Symfony\Component\DependencyInjection\ContainerInterface
    */
-  public static function getContainer() {
+  public static function getContainer($check_only = FALSE) {
+    if (!$check_only && !static::$container) {
+      throw new Exception('Container not found');
+    }
     return static::$container;
   }
 
@@ -128,7 +135,7 @@ public static function getContainer() {
    *   The specified service.
    */
   public static function service($id) {
-    return static::$container->get($id);
+    return static::getContainer()->get($id);
   }
 
   /**
@@ -154,7 +161,7 @@ public static function service($id) {
    *   The currently active request object.
    */
   public static function request() {
-    return static::$container->get('request');
+    return static::getContainer()->get('request');
   }
 
   /**
@@ -163,7 +170,7 @@ public static function request() {
    * @return \Drupal\Core\Session\AccountInterface
    */
   public static function currentUser() {
-    return static::$container->get('current_user');
+    return static::getContainer()->get('current_user');
   }
 
   /**
@@ -173,7 +180,7 @@ public static function currentUser() {
    *   The entity manager service.
    */
   public static function entityManager() {
-    return static::$container->get('entity.manager');
+    return static::getContainer()->get('entity.manager');
   }
 
   /**
@@ -183,7 +190,7 @@ public static function entityManager() {
    *   The current active database's master connection.
    */
   public static function database() {
-    return static::$container->get('database');
+    return static::getContainer()->get('database');
   }
 
   /**
@@ -197,7 +204,7 @@ public static function database() {
    *   The cache object associated with the specified bin.
    */
   public static function cache($bin = 'cache') {
-    return static::$container->get('cache.' . $bin);
+    return static::getContainer()->get('cache.' . $bin);
   }
 
   /**
@@ -210,7 +217,7 @@ public static function cache($bin = 'cache') {
    *   An expirable key value store collection.
    */
   public static function keyValueExpirable($collection) {
-    return static::$container->get('keyvalue.expirable')->get($collection);
+    return static::getContainer()->get('keyvalue.expirable')->get($collection);
   }
 
   /**
@@ -219,7 +226,7 @@ public static function keyValueExpirable($collection) {
    * @return \Drupal\Core\Lock\LockBackendInterface
    */
   public static function lock() {
-    return static::$container->get('lock');
+    return static::getContainer()->get('lock');
   }
 
   /**
@@ -238,7 +245,7 @@ public static function lock() {
    *   A configuration object.
    */
   public static function config($name) {
-    return static::$container->get('config.factory')->get($name);
+    return static::getContainer()->get('config.factory')->get($name);
   }
 
   /**
@@ -264,7 +271,7 @@ public static function config($name) {
    *   The queue object for a given name.
    */
   public static function queue($name, $reliable = FALSE) {
-    return static::$container->get('queue')->get($name, $reliable);
+    return static::getContainer()->get('queue')->get($name, $reliable);
   }
 
   /**
@@ -276,7 +283,7 @@ public static function queue($name, $reliable = FALSE) {
    * @return \Drupal\Core\KeyValueStore\KeyValueStoreInterface
    */
   public static function keyValue($collection) {
-    return static::$container->get('keyvalue')->get($collection);
+    return static::getContainer()->get('keyvalue')->get($collection);
   }
 
   /**
@@ -291,7 +298,7 @@ public static function keyValue($collection) {
    * @return \Drupal\Core\KeyValueStore\StateInterface
    */
   public static function state() {
-    return static::$container->get('state');
+    return static::getContainer()->get('state');
   }
 
   /**
@@ -301,7 +308,7 @@ public static function state() {
    *   A guzzle http client instance.
    */
   public static function httpClient() {
-    return static::$container->get('http_default_client');
+    return static::getContainer()->get('http_default_client');
   }
 
   /**
@@ -318,7 +325,7 @@ public static function httpClient() {
    *   The query object that can query the given entity type.
    */
   public static function entityQuery($entity_type, $conjunction = 'AND') {
-    return static::$container->get('entity.query')->get($entity_type, $conjunction);
+    return static::getContainer()->get('entity.query')->get($entity_type, $conjunction);
   }
 
   /**
@@ -335,7 +342,7 @@ public static function entityQuery($entity_type, $conjunction = 'AND') {
    *   The query object that can query the given entity type.
    */
   public static function entityQueryAggregate($entity_type, $conjunction = 'AND') {
-    return static::$container->get('entity.query')->getAggregate($entity_type, $conjunction);
+    return static::getContainer()->get('entity.query')->getAggregate($entity_type, $conjunction);
   }
 
   /**
@@ -344,7 +351,7 @@ public static function entityQueryAggregate($entity_type, $conjunction = 'AND')
    * @return \Drupal\Core\Flood\FloodInterface
    */
   public static function flood() {
-    return static::$container->get('flood');
+    return static::getContainer()->get('flood');
   }
 
   /**
@@ -353,7 +360,7 @@ public static function flood() {
    * @return \Drupal\Core\Extension\ModuleHandlerInterface
    */
   public static function moduleHandler() {
-    return static::$container->get('module_handler');
+    return static::getContainer()->get('module_handler');
   }
 
   /**
@@ -367,7 +374,7 @@ public static function moduleHandler() {
    * @see \Drupal\Core\TypedData\TypedDataManager::create()
    */
   public static function typedData() {
-    return static::$container->get('typed_data');
+    return static::getContainer()->get('typed_data');
   }
 
   /**
@@ -377,7 +384,7 @@ public static function typedData() {
    *   The token service.
    */
   public static function token() {
-    return static::$container->get('token');
+    return static::getContainer()->get('token');
   }
 
   /**
@@ -387,7 +394,7 @@ public static function token() {
    *   The url generator service.
    */
   public static function urlGenerator() {
-    return static::$container->get('url_generator');
+    return static::getContainer()->get('url_generator');
   }
 
   /**
@@ -433,7 +440,7 @@ public static function urlGenerator() {
    * @see \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute()
    */
   public static function url($route_name, $route_parameters = array(), $options = array()) {
-    return static::$container->get('url_generator')->generateFromRoute($route_name, $route_parameters, $options);
+    return static::getContainer()->get('url_generator')->generateFromRoute($route_name, $route_parameters, $options);
   }
 
   /**
@@ -442,7 +449,7 @@ public static function url($route_name, $route_parameters = array(), $options =
    * @return \Drupal\Core\Utility\LinkGeneratorInterface
    */
   public static function linkGenerator() {
-    return static::$container->get('link_generator');
+    return static::getContainer()->get('link_generator');
   }
 
   /**
@@ -504,7 +511,7 @@ public static function linkGenerator() {
    * @see \Drupal\Core\Utility\LinkGeneratorInterface::generate()
    */
   public static function l($text, $route_name, array $parameters = array(), array $options = array()) {
-    return static::$container->get('link_generator')->generate($text, $route_name, $parameters, $options);
+    return static::getContainer()->get('link_generator')->generate($text, $route_name, $parameters, $options);
   }
 
   /**
@@ -514,7 +521,7 @@ public static function l($text, $route_name, array $parameters = array(), array
    *   The string translation manager.
    */
   public static function translation() {
-    return static::$container->get('string_translation');
+    return static::getContainer()->get('string_translation');
   }
 
   /**
@@ -524,7 +531,7 @@ public static function translation() {
    *   The language manager.
    */
   public static function languageManager() {
-    return static::$container->get('language_manager');
+    return static::getContainer()->get('language_manager');
   }
 
   /**
@@ -534,7 +541,7 @@ public static function languageManager() {
    *   The CSRF token manager.
    */
   public static function csrfToken() {
-    return static::$container->get('csrf_token');
+    return static::getContainer()->get('csrf_token');
   }
 
   /**
@@ -544,7 +551,7 @@ public static function csrfToken() {
    *   The transliteration manager.
    */
   public static function transliteration() {
-    return static::$container->get('transliteration');
+    return static::getContainer()->get('transliteration');
   }
 
   /**
@@ -554,7 +561,7 @@ public static function transliteration() {
    *   The form builder.
    */
   public static function formBuilder() {
-    return static::$container->get('form_builder');
+    return static::getContainer()->get('form_builder');
   }
 
 }
