diff --git a/docker/dind/Dockerfile.j2 b/docker/dind/Dockerfile.j2
new file mode 100644
index 0000000000000000000000000000000000000000..e61196ac6bf9335519900366dcb2f38df3c3cb8d
--- /dev/null
+++ b/docker/dind/Dockerfile.j2
@@ -0,0 +1,28 @@
+FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+{% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] %}
+
+# Since the gate cannot do DinD on centos due to the age of the kernel, we don't
+# build a true DinD image. Should the time come that we get a newer kernel in
+# the centos gate and we want to do multinode we can populate this container
+RUN /bin/true
+
+{% elif base_distro in ['ubuntu', 'debian'] %}
+
+RUN echo 'deb http://apt.dockerproject.org/repo ubuntu-trusty main' > /etc/apt/sources.list.d/docker.list \
+    && apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D \
+    && apt-get update \
+    && apt-get install -y --no-install-recommends \
+        btrfs-tools \
+        docker-engine=1.8.2-0~trusty \
+        openssh-server \
+    && apt-get clean \
+    && pip --no-cache-dir install docker-py
+
+{% endif %}
+
+COPY start.sh /usr/local/bin/kolla_start
+RUN chmod 755 /usr/local/bin/kolla_start
+
+{{ include_footer }}
diff --git a/docker/dind/start.sh b/docker/dind/start.sh
new file mode 100644
index 0000000000000000000000000000000000000000..61a4b09e9dc5be763388e0f66da46747b26d1f72
--- /dev/null
+++ b/docker/dind/start.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+set -o errexit
+set -o nounset
+
+# External processes will be occuring and we must wait for them
+while [[ ! -e "/kolla_dind_ready" ]]; do
+    sleep 1
+done
+
+docker daemon -s btrfs 2>&1 > docker.log &
+docker_pid=$!
+
+mkdir /var/run/sshd
+/usr/sbin/sshd -D 2>&1 > sshd.log &
+sshd_pid=$!
+
+mkdir -p /root/.ssh/
+echo "${SSH_PUB}" > /root/.ssh/authorized_keys
+
+# Wait for docker daemon
+sleep 5
+
+# Due to a quirk in the cloning method we end up with a bunch of dead containers
+docker rm -v -f $(docker ps -a --no-trunc -q)
+
+# Wait until child processes exit (they should never exit)
+wait
diff --git a/etc/kolla/kolla-build.conf b/etc/kolla/kolla-build.conf
index 75a102887f0e6e21f8787b95c4b2b3b70b9f1c92..d2fc2e551903a30e9c126ceef15704c7b5e06a5c 100644
--- a/etc/kolla/kolla-build.conf
+++ b/etc/kolla/kolla-build.conf
@@ -52,7 +52,7 @@ infra = ceph,data,mariadb,haproxy,keepalived,kolla-ansible,memcached,mongodb,ope
 main = cinder,ceilometer,glance,heat,horizon,keystone,neutron,nova,swift
 aux = designate,gnocchi,ironic,magnum,zaqar
 default = data,kolla-ansible,glance,haproxy,heat,horizon,keepalived,keystone,memcached,mariadb,neutron,nova,openvswitch,rabbitmq,rsyslog
-gate = ceph,cinder,data,glance,haproxy,heat,horizon,keepalived,keystone,kolla-ansible,mariadb,memcached,neutron,nova,openvswitch,rabbitmq,rsyslog
+gate = ceph,cinder,data,dind,glance,haproxy,heat,horizon,keepalived,keystone,kolla-ansible,mariadb,memcached,neutron,nova,openvswitch,rabbitmq,rsyslog
 
 # Provide location of sources for source install builds.
 # Example: