diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst
index 354a69e3d45f15c664918c2f03ce1101d5ac2763..9bb95129dd7e135cd442a3952c8ac977a3edb3bc 100644
--- a/doc/source/user/index.rst
+++ b/doc/source/user/index.rst
@@ -1103,7 +1103,7 @@ Network driver (network-driver)
   `Networking`_ section for more details.
 
 Volume driver (volume-driver)
-  Specified in the ClusterTemplate to select the volume driver.  The supported
+  Specified in the ClusterTemplate to select the volume driver. The supported
   volume driver is 'cinder', allowing Cinder volumes to be mounted in
   containers for use as persistent storage.  Data written to these volumes
   will persist after the container exits and can be accessed again from other
@@ -1111,10 +1111,12 @@ Volume driver (volume-driver)
   will be deleted.  Refer to the `Storage`_ section for more details.
 
 Storage driver (docker-storage-driver)
-  Specified in the ClusterTemplate to select the Docker storage driver.  The
+  Specified in the ClusterTemplate to select the Docker storage driver. The
   default is 'devicemapper'. Refer to the `Storage`_ section for more
   details.
 
+  **NOTE:** For Fedora CoreOS driver, devicemapper is not supported.
+
 Image (image)
   Specified in the ClusterTemplate to indicate the image to boot the servers.
   The image binary is loaded in Glance with the attribute
@@ -2881,6 +2883,12 @@ of Docker storage drivers available.
   container isolation, although it still runs in enforcing mode on the
   cluster compute instances.
 
+* 'overlay2' is the preferred storage driver, for all currently supported
+  Linux distributions, and requires no extra configuration. When possible,
+  overlay2 is the recommended storage driver. When installing Docker for
+  the first time, overlay2 is used by default.
+
+
 Persistent storage
 ------------------
 
diff --git a/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_fedora_coreos.sh b/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_fedora_coreos.sh
index 91b49da505b11d88aafcbb38dc8c660034a51622..cca5497be8d211374971620c0b74303fe6d13a72 100644
--- a/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_fedora_coreos.sh
+++ b/magnum/drivers/common/templates/fragments/configure_docker_storage_driver_fedora_coreos.sh
@@ -1,55 +1,37 @@
 ssh_cmd="ssh -F /srv/magnum/.ssh/config root@localhost"
 
-configure_storage_driver_generic() {
-
-    cat > /etc/systemd/system/var-lib-docker.mount <<EOF
-[Unit]
-Description=Mount ephemeral to /var/lib/docker
-
-[Mount]
-What=/dev/vdb
-Where=/var/lib/docker
-Type=ext4
-
-[Install]
-WantedBy=local-fs.target
-EOF
-
-
-    cat > /etc/sysconfig/enable-docker-mount.sh <<EOF
-#!/bin/sh
-. /etc/sysconfig/heat-params
-if [  -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then
-    if [[ "$(blkid -o value -s TYPE /dev/vdb)" -eq 0 ]]; then
-        systemctl daemon-reload
-        systemctl start var-lib-docker.mount
-        systemctl enable var-lib-docker.mount
-    else
-        mkfs -t ext4 /dev/vdb
-        systemctl daemon-reload
-        systemctl start var-lib-docker.mount
-        systemctl enable var-lib-docker.mount
-    fi
+runtime=${CONTAINER_RUNTIME}
+if [ ${CONTAINER_RUNTIME} = "containerd"  ] ; then
+    storage_dir="/var/lib/containerd"
+else
+    storage_dir="/var/lib/docker"
+    runtime="docker"
 fi
-EOF
-
-    chmod +x /etc/sysconfig/enable-docker-mount.sh
 
-    cat > /etc/systemd/system/enable-docker-mount.service <<EOF
-[Unit]
-Description=Mount docker volume
-
-[Service]
-Type=oneshot
-EnvironmentFile=/etc/sysconfig/heat-params
-ExecStart=/etc/sysconfig/enable-docker-mount.sh
+clear_docker_storage () {
+    # stop docker
+    $ssh_cmd systemctl stop ${runtime}
+    # clear storage graph
+    $ssh_cmd rm -rf ${storage_dir}
+    $ssh_cmd mkdir -p ${storage_dir}
+}
 
-[Install]
-RequiredBy=multi-user.target
-EOF
+# Configure generic docker storage driver.
+configure_storage_driver_generic() {
+    clear_docker_storage
 
+    if [ -n "$DOCKER_VOLUME_SIZE" ] && [ "$DOCKER_VOLUME_SIZE" -gt 0 ]; then
+        $ssh_cmd mkfs.xfs -f ${device_path}
+        echo "${device_path} ${storage_dir} xfs defaults 0 0" >> /etc/fstab
+        $ssh_cmd mount -a
+        $ssh_cmd restorecon -R ${storage_dir}
+    fi
+    if [ ${CONTAINER_RUNTIME} = "host-docker"  ] ; then
+        sed -i -E 's/^OPTIONS=("|'"'"')/OPTIONS=\1--storage-driver='$1' /' /etc/sysconfig/docker
+    fi
 }
 
 configure_devicemapper() {
     configure_storage_driver_generic
-}
\ No newline at end of file
+}
+
diff --git a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml
index 41ab9722d0156d5bfc55ddc783b0e691c708aa08..4f27faed9686c44104791ddb5e0c199927bac624 100644
--- a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml
+++ b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml
@@ -269,7 +269,9 @@ parameters:
   docker_storage_driver:
     type: string
     description: docker storage driver name
-    default: "devicemapper"
+    default: "overlay2"
+    constraints:
+      - allowed_pattern: "^(?!devicemapper$).*"
 
   cgroup_driver:
     type: string
diff --git a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubeminion.yaml b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubeminion.yaml
index 0077163b9344a500b49f79579050c75e0e42f6b3..6781dbc44101eedb026d3a174c482d2422e54cb5 100644
--- a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubeminion.yaml
+++ b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubeminion.yaml
@@ -462,7 +462,10 @@ resources:
             - get_file: ../../common/templates/fragments/configure-docker-registry.sh
             - get_file: ../../common/templates/kubernetes/fragments/configure-kubernetes-minion.sh
             - get_file: ../../common/templates/kubernetes/fragments/add-proxy.sh
-              # TODO add docker_storage_setup
+            - str_replace:
+                template: {get_file: ../../common/templates/fragments/configure-docker-storage.sh}
+                params:
+                  $configure_docker_storage_driver: {get_file: ../../common/templates/fragments/configure_docker_storage_driver_fedora_coreos.sh}
             - get_file: ../../common/templates/kubernetes/fragments/enable-services-minion.sh
             - get_file: ../../common/templates/fragments/enable-docker-registry.sh