diff --git a/core/includes/form.inc b/core/includes/form.inc
index c1c82c1..2e3baf4 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -253,29 +253,6 @@ function template_preprocess_details(&$variables) {
 }
 
 /**
- * Prepares variables for radios templates.
- *
- * Default template: radios.html.twig.
- *
- * @param array $variables
- *   An associative array containing:
- *   - element: An associative array containing the properties of the element.
- *     Properties used: #title, #value, #options, #description, #required,
- *     #attributes, #children.
- */
-function template_preprocess_radios(&$variables) {
-  $element = $variables['element'];
-  $variables['attributes'] = array();
-  if (isset($element['#id'])) {
-    $variables['attributes']['id'] = $element['#id'];
-  }
-  if (isset($element['#attributes']['title'])) {
-    $variables['attributes']['title'] = $element['#attributes']['title'];
-  }
-  $variables['children'] = $element['#children'];
-}
-
-/**
  * Prepares variables for checkboxes templates.
  *
  * Default template: checkboxes.html.twig.
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 54b038b..543140f 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1134,6 +1134,21 @@ function template_preprocess_container(&$variables) {
 }
 
 /**
+ * Prepares variables for radios container templates.
+ *
+ * Default template: container--radios.html.twig.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - element: An associative array containing the properties of the element.
+ *     Properties used: #id, #attributes, #children.
+ */
+function template_preprocess_container__radios(&$variables) {
+  // Disabled attribute is handled on children.
+  unset($variables['element']['#attributes']['disabled']);
+}
+
+/**
  * Prepares variables for maintenance task list templates.
  *
  * Default template: maintenance-task-list.html.twig.
@@ -1815,9 +1830,6 @@ function drupal_common_theme() {
     'details' => array(
       'render element' => 'element',
     ),
-    'radios' => array(
-      'render element' => 'element',
-    ),
     'checkboxes' => array(
       'render element' => 'element',
     ),
diff --git a/core/lib/Drupal/Core/Render/Element/Radios.php b/core/lib/Drupal/Core/Render/Element/Radios.php
index a50fc70..8386468 100644
--- a/core/lib/Drupal/Core/Render/Element/Radios.php
+++ b/core/lib/Drupal/Core/Render/Element/Radios.php
@@ -47,7 +47,7 @@ public function getInfo() {
       '#process' => array(
         array($class, 'processRadios'),
       ),
-      '#theme_wrappers' => array('radios'),
+      '#theme_wrappers' => array('container__radios'),
       '#pre_render' => array(
         array($class, 'preRenderCompositeFormElement'),
       ),
diff --git a/core/modules/system/templates/radios.html.twig b/core/modules/system/templates/radios.html.twig
deleted file mode 100644
index e397644..0000000
--- a/core/modules/system/templates/radios.html.twig
+++ /dev/null
@@ -1,15 +0,0 @@
-{#
-/**
- * @file
- * Default theme implementation for a 'radios' #type form element.
- *
- * Available variables
- * - attributes: A list of HTML attributes for the wrapper element.
- * - children: The rendered radios.
- *
- * @see template_preprocess_radios()
- *
- * @ingroup themeable
- */
-#}
-<div{{ attributes }}>{{ children }}</div>
