diff --git a/roles/network_plugin/flannel/handlers/main.yml b/roles/network_plugin/flannel/handlers/main.yml
index 98c93a53a5e2d47fb3483d3f9aa2461f4559da35..9a87e2ec21770d253d0424d5394ae5740b058416 100644
--- a/roles/network_plugin/flannel/handlers/main.yml
+++ b/roles/network_plugin/flannel/handlers/main.yml
@@ -10,6 +10,7 @@
     - Flannel | reload systemd
     - Flannel | reload docker.socket
     - Flannel | reload docker
+    - Flannel | reload docker (atomic)
     - Flannel | pause while Docker restarts
     - Flannel | wait for docker
 
@@ -26,6 +27,11 @@
   service:
     name: docker
     state: restarted
+  when: not is_atomic
+
+- name: Flannel | reload docker (atomic)
+  shell: systemctl stop docker && runc list | awk '!/ID/ {print $1}' | xargs -n 1 -I ID runc kill ID KILL && systemctl start docker
+  when: is_atomic
 
 - name: Flannel | pause while Docker restarts
   pause: