Add Docker in Docker container

Change-Id: I3c953125ed0105b7e8b62e62da56bf3fa30889d1
Partially-Implements: blueprint multinode-gate
This commit is contained in:
Sam Yaple 2015-11-04 02:32:11 +00:00
parent 4beea51e75
commit 6a9beb4a33
3 changed files with 57 additions and 1 deletions

28
docker/dind/Dockerfile.j2 Normal file
View File

@ -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 }}

28
docker/dind/start.sh Normal file
View File

@ -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

View File

@ -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 main = cinder,ceilometer,glance,heat,horizon,keystone,neutron,nova,swift
aux = designate,gnocchi,ironic,magnum,zaqar aux = designate,gnocchi,ironic,magnum,zaqar
default = data,kolla-ansible,glance,haproxy,heat,horizon,keepalived,keystone,memcached,mariadb,neutron,nova,openvswitch,rabbitmq,rsyslog 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. # Provide location of sources for source install builds.
# Example: # Example: