diff --git a/ansible/roles/qdrouterd/defaults/main.yml b/ansible/roles/qdrouterd/defaults/main.yml
index 4053b981bb81edfb96fb061306ff6a6ef8837d37..6c1d32217a7a63db385817c84ab9e58691a537b2 100644
--- a/ansible/roles/qdrouterd/defaults/main.yml
+++ b/ansible/roles/qdrouterd/defaults/main.yml
@@ -9,6 +9,8 @@ qdrouterd_services:
     image: "{{ qdrouterd_image_full }}"
     volumes: "{{ qdrouterd_default_volumes + qdrouterd_extra_volumes }}"
     dimensions: "{{ qdrouterd_dimensions }}"
+    healthcheck: "{{ qdrouterd_healthcheck }}"
+
 
 ####################
 # Docker
@@ -19,6 +21,19 @@ qdrouterd_tag: "{{ openstack_tag }}"
 qdrouterd_image_full: "{{ qdrouterd_image }}:{{ qdrouterd_tag }}"
 qdrouterd_dimensions: "{{ default_container_dimensions }}"
 
+qdrouterd_enable_healthchecks: "{{ enable_container_healthchecks }}"
+qdrouterd_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
+qdrouterd_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
+qdrouterd_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
+qdrouterd_healthcheck_test: ["CMD-SHELL", "healthcheck_curl http://{{ api_interface_address |  put_address_in_context('url') }}:{{ qdrouterd_port }}"]
+qdrouterd_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
+qdrouterd_healthcheck:
+  interval: "{{ qdrouterd_healthcheck_interval }}"
+  retries: "{{ qdrouterd_healthcheck_retries }}"
+  start_period: "{{ qdrouterd_healthcheck_start_period }}"
+  test: "{% if qdrouterd_enable_healthchecks | bool %}{{ qdrouterd_healthcheck_test }}{% else %}NONE{% endif %}"
+  timeout: "{{ qdrouterd_healthcheck_timeout }}"
+
 qdrouterd_default_volumes:
   - "{{ node_config_directory }}/qdrouterd/:{{ container_config_directory }}/:ro"
   - "/etc/localtime:/etc/localtime:ro"
diff --git a/ansible/roles/qdrouterd/handlers/main.yml b/ansible/roles/qdrouterd/handlers/main.yml
index 17c6b84e47c120cc62fa209fc4f89b9be6729030..729f221632a0b34d110cbc3975984d385cd361b8 100644
--- a/ansible/roles/qdrouterd/handlers/main.yml
+++ b/ansible/roles/qdrouterd/handlers/main.yml
@@ -11,5 +11,6 @@
     image: "{{ service.image }}"
     volumes: "{{ service.volumes }}"
     dimensions: "{{ service.dimensions }}"
+    healthcheck: "{{ service.healthcheck | default(omit) }}"
   when:
     - kolla_action != "config"
diff --git a/ansible/roles/qdrouterd/tasks/check-containers.yml b/ansible/roles/qdrouterd/tasks/check-containers.yml
index 9566ee380f68a984c40ec009efb06abd962b391b..5d713c1c3368f028815aaaa0eaaf4198285eab6a 100644
--- a/ansible/roles/qdrouterd/tasks/check-containers.yml
+++ b/ansible/roles/qdrouterd/tasks/check-containers.yml
@@ -8,6 +8,7 @@
     image: "{{ item.value.image }}"
     volumes: "{{ item.value.volumes }}"
     dimensions: "{{ item.value.dimensions }}"
+    healthcheck: "{{ item.value.healthcheck | default(omit) }}"
   when:
     - inventory_hostname in groups[item.value.group]
     - item.value.enabled | bool
diff --git a/releasenotes/notes/implement-docker-healthchecks-for-qdrouterd-e32981b579ea858a.yaml b/releasenotes/notes/implement-docker-healthchecks-for-qdrouterd-e32981b579ea858a.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b14ce85b3f56a23bfba8f8724c42bc394f711a0d
--- /dev/null
+++ b/releasenotes/notes/implement-docker-healthchecks-for-qdrouterd-e32981b579ea858a.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Implements container healthchecks for qdrouterd services.
+    See `blueprint
+    <https://blueprints.launchpad.net/kolla-ansible/+spec/container-health-check>`__