diff --git a/ansible/roles/docker/handlers/main.yml b/ansible/roles/docker/handlers/main.yml
new file mode 100644
index 000000000..de4135375
--- /dev/null
+++ b/ansible/roles/docker/handlers/main.yml
@@ -0,0 +1,6 @@
+---
+- name: restart docker service
+  service:
+    name: docker
+    state: restarted
+  become: True
diff --git a/ansible/roles/docker/tasks/config.yml b/ansible/roles/docker/tasks/config.yml
new file mode 100644
index 000000000..8284ccfc0
--- /dev/null
+++ b/ansible/roles/docker/tasks/config.yml
@@ -0,0 +1,8 @@
+---
+- name: Ensure the docker daemon configuration file exists
+  template:
+    src: daemon.json.j2
+    dest: /etc/docker/daemon.json
+  become: True
+  notify: restart docker service
+
diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml
index a0b7bf66e..d3d578b74 100644
--- a/ansible/roles/docker/tasks/main.yml
+++ b/ansible/roles/docker/tasks/main.yml
@@ -24,3 +24,16 @@
 
 - include: storage.yml
   when: "{{ 'Data loop file' in docker_info.stdout }}"
+
+- name: Read Docker daemon config file
+  slurp:
+    src: /etc/docker/daemon.json
+  register: docker_daemon_conf
+  become: True
+
+- name: Parse Docker daemon config JSON
+  set_fact:
+    docker_daemon_json: "{{ docker_daemon_conf['content'] | b64decode | from_json }}"
+
+- include: config.yml
+  when: "{{ docker_daemon_json['mtu'] }} != 1450 or {{ docker_daemon_json['storage-driver'] }} != 'devicemapper'"
diff --git a/ansible/roles/docker/tasks/storage.yml b/ansible/roles/docker/tasks/storage.yml
index 09fda5fc4..030ac05f5 100644
--- a/ansible/roles/docker/tasks/storage.yml
+++ b/ansible/roles/docker/tasks/storage.yml
@@ -4,6 +4,7 @@
     name: docker
     state: stopped
   become: True
+  notify: restart docker service
 
 - name: Ensure loopback storage state is absent
   file:
@@ -47,15 +48,3 @@
     lvchange --metadataprofile docker-thinpool
     {{ docker_storage_volume_group }}/{{ docker_storage_volume_thinpool }}
   become: True
-
-- name: Ensure the docker daemon configuration file exists
-  template:
-    src: daemon.json.j2
-    dest: /etc/docker/daemon.json
-  become: True
-
-- name: Ensure the docker daemon is running
-  service:
-    name: docker
-    state: started
-  become: True
diff --git a/ansible/roles/docker/templates/daemon.json.j2 b/ansible/roles/docker/templates/daemon.json.j2
index a02fc1a79..0da43abc7 100644
--- a/ansible/roles/docker/templates/daemon.json.j2
+++ b/ansible/roles/docker/templates/daemon.json.j2
@@ -1,8 +1,9 @@
 {
   "storage-driver": "devicemapper",
-   "storage-opts": [
-     "dm.thinpooldev=/dev/mapper/{{ docker_storage_volume_group | replace('-', '--') }}-{{ docker_storage_volume_thinpool | replace('-', '--') }}",
-     "dm.use_deferred_removal=true",
-     "dm.use_deferred_deletion=true"
-   ]
+  "mtu": 1450,
+  "storage-opts": [
+    "dm.thinpooldev=/dev/mapper/{{ docker_storage_volume_group | replace('-', '--') }}-{{ docker_storage_volume_thinpool | replace('-', '--') }}",
+    "dm.use_deferred_removal=true",
+    "dm.use_deferred_deletion=true"
+  ]
 }