diff --git a/desktop.yml b/desktop.yml
index b4a4a039a7b7fe8c29db105e3c4a4dc44f81df75..0e16f7ce1d032ef087c69e25276fa9417892aa62 100644
--- a/desktop.yml
+++ b/desktop.yml
@@ -2,6 +2,24 @@
 - hosts: all
   become: yes
   become_user: root
+  vars:
+      docker_graph_mount: '/home/{{ ansible_env.SUDO_USER }}'
+      docker_graph_directory: '{{ docker_graph_mount }}/.bind_mounts/docker'
+  handlers:
+  - name: Systemd daemon reload
+    command: /bin/systemctl daemon-reload
+
+  - name: Restart Docker
+    service:
+        name: docker
+        state: restarted
+
+  - name: Update initramfs
+    command: /usr/sbin/update-initramfs -u
+
+  - name: Update GRUB
+    command: /usr/sbin/update-grub
+
   tasks:
   - assert:
       that:
@@ -21,7 +39,7 @@
         state: present
         update_cache: yes
 
-  - name: apt install
+  - name: APT install
     with_items:
     - plymouth
     - network-manager
@@ -61,10 +79,6 @@
       value: spinner
     register: configure_plymouth
 
-  - name: Update initramfs
-    when: configure_plymouth.changed
-    command: /usr/sbin/update-initramfs -u
-
   - name: Configure GRUB
     with_dict:
       GRUB_TIMEOUT: 1
@@ -76,13 +90,59 @@
       state: present
     register: configure_grub
 
-  - name: Update GRUB
-    when: configure_grub.changed
-    command: /usr/sbin/update-grub
-
   - name: Make /tmp tmpfs mount
     mount:
       fstype: tmpfs
       name: /tmp
       src: none
       state: present
+
+  - name: Create Docker graph directory
+    file:
+      path: '{{ docker_graph_directory }}'
+      owner: root
+      group: root
+      mode: 0o711
+    notify:
+    - Restart Docker
+
+  - name: Configure Docker graph directory
+    ignore_errors: True
+    lineinfile:
+      dest: /etc/default/docker
+      line: 'DOCKER_OPTS="--graph {{ docker_graph_directory }}"'
+      regexp: '^DOCKER_OPTS='
+      state: present
+    notify:
+    - Restart Docker
+
+  - name: Create Systemd configuration override directories
+    with_items:
+    - docker.service
+    - dnsmasq.service
+    file:
+      path: '/etc/systemd/system/{{ item }}.d/'
+      owner: root
+      group: root
+      mode: 0o0755
+      state: directory
+
+  - name: Override docker.service Systemd configuration
+    template:
+      src: docker.service.d_Assertions.conf.j2
+      dest: /etc/systemd/system/docker.service.d/Assertions.conf
+      owner: root
+      group: root
+      mode: 0o0644
+    notify:
+    - Systemd daemon reload
+
+  - name: Override dnsmasq.service Systemd configuration
+    template:
+      src: dnsmasq.service.d_before-systemd-resovled.conf
+      dest: /etc/systemd/system/dnsmasq.service.d/before-systemd-resovled.conf
+      owner: root
+      group: root
+      mode: 0o0644
+    notify:
+    - Systemd daemon reload
diff --git a/templates/dnsmasq.service.d_before-systemd-resovled.conf b/templates/dnsmasq.service.d_before-systemd-resovled.conf
new file mode 100644
index 0000000000000000000000000000000000000000..ea645711b4655009461ad8827d1e51719a7f59df
--- /dev/null
+++ b/templates/dnsmasq.service.d_before-systemd-resovled.conf
@@ -0,0 +1,2 @@
+[Unit]
+Before=systemd-resolved.service
diff --git a/templates/docker.service.d_Assertions.conf.j2 b/templates/docker.service.d_Assertions.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..598b70962b2af0277df6d149584ca9e4cc93e6b2
--- /dev/null
+++ b/templates/docker.service.d_Assertions.conf.j2
@@ -0,0 +1,4 @@
+[Unit]
+After=home-nimrod.mount
+AssertPathIsMountPoint={{ docker_graph_mount }}
+AssertPathIsDirectory={{ docker_graph_directory }}