summaryrefslogtreecommitdiff
path: root/docker/dind
diff options
context:
space:
mode:
authorSam Yaple <sam@yaple.net>2015-11-04 02:32:11 +0000
committerSam Yaple <sam@yaple.net>2015-11-05 10:58:29 +0000
commit6a9beb4a33a0a44ba7ffbafc80d794604f030d57 (patch)
tree610dbeff8158d9ae05581de3a7fdf006c922e9f8 /docker/dind
parent4beea51e75c1a3c8348f58101ea62528187b597b (diff)
downloadkolla-6a9beb4a33a0a44ba7ffbafc80d794604f030d57.tar.gz
kolla-6a9beb4a33a0a44ba7ffbafc80d794604f030d57.zip
Add Docker in Docker container
Change-Id: I3c953125ed0105b7e8b62e62da56bf3fa30889d1 Partially-Implements: blueprint multinode-gate
Diffstat (limited to 'docker/dind')
-rw-r--r--docker/dind/Dockerfile.j228
-rw-r--r--docker/dind/start.sh28
2 files changed, 56 insertions, 0 deletions
diff --git a/docker/dind/Dockerfile.j2 b/docker/dind/Dockerfile.j2
new file mode 100644
index 000000000..e61196ac6
--- /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 000000000..61a4b09e9
--- /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