diff --git a/roles/container-engine/docker/tasks/reset.yml b/roles/container-engine/docker/tasks/reset.yml
index 7feec312ab0286051ce20da9e7d99a9e3ca12dda..185fbad90b558c27220ab806e5db12b1be8b24cf 100644
--- a/roles/container-engine/docker/tasks/reset.yml
+++ b/roles/container-engine/docker/tasks/reset.yml
@@ -1,20 +1,81 @@
 ---
+
+- name: Docker | Get package facts
+  package_facts:
+    manager: auto
+
+- name: Docker | Find docker packages
+  set_fact:
+    docker_packages_list: "{{ ansible_facts.packages.keys() | select('search', '^docker*') }}"
+    containerd_package: "{{ ansible_facts.packages.keys() | select('search', '^containerd*') }}"
+
+- name: Docker | Stop all running container
+  shell: "set -o pipefail && {{ docker_bin_dir }}/docker ps -q | xargs -r {{ docker_bin_dir }}/docker kill"
+  args:
+    executable: /bin/bash
+  register: stop_all_containers
+  retries: 5
+  until: stop_all_containers.rc == 0
+  changed_when: true
+  delay: 5
+  ignore_errors: true  # noqa ignore-errors
+  when: docker_packages_list|length>0
+
+- name: reset | remove all containers
+  shell: "set -o pipefail && {{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv"
+  args:
+    executable: /bin/bash
+  register: remove_all_containers
+  retries: 4
+  until: remove_all_containers.rc == 0
+  delay: 5
+  when: docker_packages_list|length>0
+
+- name: Docker | Stop docker service
+  service:
+    name: "{{ item }}"
+    enabled: false
+    state: stopped
+  loop:
+    - docker
+    - docker.socket
+    - containerd
+
+- name: Docker | Remove dpkg hold
+  dpkg_selections:
+    name: "{{ item }}"
+    selection: install
+  when: ansible_pkg_mgr == 'apt'
+  changed_when: false
+  with_items:
+    - "{{ docker_packages_list }}"
+    - "{{ containerd_package }}"
+
+- name: Docker | Remove docker package
+  package:
+    name: "{{ item }}"
+    state: absent
+  changed_when: false
+  with_items:
+    - "{{ docker_packages_list }}"
+    - "{{ containerd_package }}"
+  when:
+    - not ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]
+    - not is_ostree
+    - docker_packages_list|length > 0
+
 - name: Docker | ensure docker-ce repository is removed
   apt_repository:
     repo: "{{ item }}"
     state: absent
   with_items: "{{ docker_repo_info.repos }}"
   when: ansible_pkg_mgr == 'apt'
-  tags:
-    - reset_docker
 
 - name: Docker | Remove docker repository on Fedora
   file:
     name: "{{ yum_repo_dir }}/docker.repo"
     state: absent
   when: ansible_distribution == "Fedora" and not is_ostree
-  tags:
-    - reset_docker
 
 - name: Docker | Remove docker repository on RedHat/CentOS/Oracle/AlmaLinux Linux
   template:
@@ -24,18 +85,6 @@
     - ansible_os_family == "RedHat"
     - ansible_distribution != "Fedora"
     - not is_ostree
-  tags:
-    - reset_docker
-
-- name: Docker | Stop docker service
-  service:
-    name: docker
-    daemon_reload: true
-    enabled: false
-    masked: true
-    state: stopped
-  tags:
-    - reset_docker
 
 - name: Docker | Remove docker configuration files
   file:
@@ -43,19 +92,13 @@
     state: absent
   loop:
     - /etc/systemd/system/docker.service.d/
+    - /etc/systemd/system/docker.socket
+    - /etc/systemd/system/docker.service
+    - /etc/systemd/system/containerd.service
+    - /etc/systemd/system/containerd.service.d
     - /var/lib/docker
     - /etc/docker
-  tags:
-    - reset_docker
 
-- name: Docker | Remove docker package
-  package:
-    name: "{{ docker_package_info.pkgs }}"
-    state: absent
-  changed_when: false
-  when:
-    - not ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"]
-    - not is_ostree
-    - docker_package_info.pkgs|length > 0
-  tags:
-    - reset_docker
+- name: Docker | systemctl daemon-reload  # noqa 503
+  systemd:
+    daemon_reload: true
diff --git a/roles/reset/tasks/main.yml b/roles/reset/tasks/main.yml
index de7c9997a8a9ce4cc768251630cb9c8325d00fe9..fc452848bd000ec5710dbf474e57ce15511e9915 100644
--- a/roles/reset/tasks/main.yml
+++ b/roles/reset/tasks/main.yml
@@ -30,43 +30,18 @@
     - containerd
     - crio
 
-- name: reset | remove docker dropins
-  file:
-    path: "/etc/systemd/system/docker.service.d/{{ item }}"
-    state: absent
-  with_items:
-    - docker-dns.conf
-    - docker-options.conf
-    - http-proxy.conf
-    - docker-orphan-cleanup.conf
-  register: docker_dropins_removed
+- name: reset | Remove Docker
+  include_role:
+    name: container-engine/docker
+    tasks_from: reset
+  when: container_manager == 'docker'
   tags:
     - docker
 
 - name: reset | systemctl daemon-reload  # noqa 503
   systemd:
     daemon_reload: true
-  when: services_removed.changed or docker_dropins_removed.changed
-
-- name: reset | remove all containers
-  shell: "set -o pipefail && {{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv"
-  args:
-    executable: /bin/bash
-  register: remove_all_containers
-  retries: 4
-  until: remove_all_containers.rc == 0
-  delay: 5
-  when: container_manager == "docker"
-  tags:
-    - docker
-
-- name: reset | restart docker if needed  # noqa 503
-  service:
-    name: docker
-    state: restarted
-  when: docker_dropins_removed.changed and container_manager == "docker"
-  tags:
-    - docker
+  when: services_removed.changed
 
 - name: reset | check if crictl is present
   stat: