diff --git a/.zuul.yaml b/.zuul.yaml
index 8d7e06ecd3..febcf8e462 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -344,6 +344,7 @@
       copy_output:
         '/var/log/syslog': logs_txt
         '/var/log/messages': logs_txt
+        '/var/log/docker': logs
     host-vars:
       bridge.openstack.org:
         host_copy_output:
diff --git a/playbooks/zuul/run-base-post.yaml b/playbooks/zuul/run-base-post.yaml
index 4d44024c42..fec0ab1f4d 100644
--- a/playbooks/zuul/run-base-post.yaml
+++ b/playbooks/zuul/run-base-post.yaml
@@ -16,6 +16,32 @@
 
 - hosts: all
   tasks:
+    - name: List containers
+      command: "docker ps -a --format '{{ '{{ .Names }}' }}'"
+      register: docker_containers
+      ignore_errors: true
+      become: true
+
+    - name: Create container log dir
+      file:
+        path: "/var/log/docker"
+        state: directory
+      become: true
+
+    - name: Save container logs
+      loop: "{{ docker_containers.stdout_lines | default([]) }}"
+      shell: "docker logs {{ item }} &> /var/log/docker/{{item}}.txt"
+      args:
+        executable: /bin/bash
+      become: true
+
+    - name: Open container logs permissions
+      file:
+        dest: /var/log/docker
+        mode: u=rwX,g=rX,o=rX
+        recurse: yes
+      become: yes
+
     - include_role:
         name: stage-output