diff --git a/ansible/roles/nova/tasks/refresh_scheduler_cell_cache.yml b/ansible/roles/nova/tasks/refresh_scheduler_cell_cache.yml
index 286b111c439c60b7ed279631f3b1e7d139bdfc30..a8ece236010da8615e2487f66d790d1429d9f0ae 100644
--- a/ansible/roles/nova/tasks/refresh_scheduler_cell_cache.yml
+++ b/ansible/roles/nova/tasks/refresh_scheduler_cell_cache.yml
@@ -3,7 +3,10 @@
 # in nova scheduler.
 - name: Refresh cell cache in nova scheduler
   become: true
-  command: docker kill --signal HUP nova_scheduler
-  changed_when: False
+  # NOTE(yoctozepto): Normally we would send the signal via Docker but, due to a
+  # Docker bug (https://github.com/moby/moby/issues/11065), this might cause the
+  # container to be stopped if we restart Docker or reboot the server as we
+  # use the 'unless-stopped' restart policy by default.
+  shell: "kill -HUP `docker inspect -f '{% raw %}{{.State.Pid}}{% endraw %}' nova_scheduler`"
   when:
     - inventory_hostname in groups['nova-scheduler']