diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6f8f92c853d08b754280ecbbf5f4043c65db603a..16136656884b33e1604ece1b82a9aa3252fa403f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,10 @@
-image: "0xacab.org:4567/leap/bitmask_android/android-ndk:latest"
+image: 0xacab.org:4567/leap/bitmask_android/android-ndk:latest
+
+variables:
+  DOCKER_DRIVER: overlay
 
 stages:
+  - docker
   - build
 
 before_script:
@@ -14,3 +18,68 @@ build:
   artifacts:
     paths:
     - app/build/outputs/
+
+
+build_emulator_image:
+  image: 0xacab.org:4567/leap/bitmask_android/android-sdk:latest
+  stage: docker
+  services:
+    - docker:dind
+  tags:
+    - docker-in-docker
+  before_script:
+     - >
+       export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/578/pipelines |
+       python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
+  script:
+    - >
+      if git diff $LAST_COMMIT HEAD --name-only|grep docker/android-emulator.dockerfile; then
+        docker --version
+        docker info
+        docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY
+        docker build -t ${CI_REGISTRY_IMAGE}/android-emulator:latest -f docker/android-emulator.dockerfile docker
+        docker push ${CI_REGISTRY_IMAGE}/android-emulator:latest
+      fi
+
+
+build_ndk_image:
+  image: 0xacab.org:4567/leap/bitmask_android/android-sdk:latest
+  stage: docker
+  services:
+    - docker:dind
+  tags:
+    - docker-in-docker
+  before_script:
+     - >
+       export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/578/pipelines |
+       python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
+  script:
+    - >
+      if git diff $LAST_COMMIT HEAD --name-only|grep docker/android-ndk.dockerfile; then
+        docker --version
+        docker info
+        docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY
+        docker build -t ${CI_REGISTRY_IMAGE}/android-ndk:latest -f docker/android-ndk.dockerfile docker
+        docker push ${CI_REGISTRY_IMAGE}/android-ndk:latest
+      fi
+
+build_sdk_image:
+  image: 0xacab.org:4567/leap/bitmask_android/android-sdk:latest
+  stage: docker
+  services:
+    - docker:dind
+  tags:
+    - docker-in-docker
+  before_script:
+     - >
+       export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/578/pipelines |
+       python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
+  script:
+    - >
+      if git diff $LAST_COMMIT HEAD --name-only|grep docker/android-sdk.dockerfile; then
+        docker --version
+        docker info
+        docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY
+        docker build -t ${CI_REGISTRY_IMAGE}/android-sdk:latest -f docker/android-sdk.dockerfile docker
+        docker push ${CI_REGISTRY_IMAGE}/android-sdk:latest
+      fi
diff --git a/docker/android-emulator.dockerfile b/docker/android-emulator.dockerfile
index 0201312bf60c133595ca1e2e2b3d14bd15767a42..7c2e0989080cba38a6b946c479c11f3f84e6186b 100644
--- a/docker/android-emulator.dockerfile
+++ b/docker/android-emulator.dockerfile
@@ -3,14 +3,26 @@ FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest
 MAINTAINER LEAP Encryption Access Project <info@leap.se>
 LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25"
 
+# Make sure debconf doesn't complain about lack of interactivity
+ENV DEBIAN_FRONTEND noninteractive
+# ensure GL compatibility
+ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
+
 # ------------------------------------------------------
 # --- System Dependencies
 
-# ensure GL compatibility
 
-RUN apt-get update -qq
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mesa-utils 
-ENV ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 
+# Need docker package in order to do Docker-in-Docker (DIND)
+RUN apt-get update -qq && \
+    apt-get -y dist-upgrade && \
+    apt-get -y install gnupg apt-transport-https
+RUN echo 'deb https://apt.dockerproject.org/repo debian-stretch main'> /etc/apt/sources.list.d/docker.list && \
+    curl -s https://apt.dockerproject.org/gpg | apt-key add -
+RUN apt-get update -qq && \
+    apt-get -y install docker-engine mesa-utils && \
+    apt-get clean && \
+    apt-get autoclean && \
+    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
 # ------------------------------------------------------
 # --- Install Android Emulator
diff --git a/docker/android-ndk.dockerfile b/docker/android-ndk.dockerfile
index 0a3eabfdab4cf94ab3646e2f146169ccd7180a1f..1e88cc2f9740371bd6f47e1f63a534fd3228fc00 100644
--- a/docker/android-ndk.dockerfile
+++ b/docker/android-ndk.dockerfile
@@ -3,18 +3,30 @@ FROM 0xacab.org:4567/leap/bitmask_android/android-sdk:latest
 MAINTAINER LEAP Encryption Access Project <info@leap.se>
 LABEL Description="Android NDK image based on android-sdk baseimage" Vendor="LEAP" Version="r12b"
 
+# Make sure debconf doesn't complain about lack of interactivity
+ENV DEBIAN_FRONTEND noninteractive
+
 # ------------------------------------------------------
 # --- Install System Dependencies
 
-RUN apt-get update -qq
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \
-    make gcc file lib32stdc++6 lib32z1 # JNI build dependencies w/ 32-bit compatible C libs
+# Need docker package in order to do Docker-in-Docker (DIND)
+RUN apt-get update -qq && \
+    apt-get -y dist-upgrade && \
+    apt-get install -y gnupg apt-transport-https
+RUN echo 'deb https://apt.dockerproject.org/repo debian-stretch main'> /etc/apt/sources.list.d/docker.list && \
+    curl -s https://apt.dockerproject.org/gpg | apt-key add -
+# JNI build dependencies w/ 32-bit compatible C libs
+RUN apt-get update -qq && \
+    apt-get -y install docker-engine make gcc file lib32stdc++6 lib32z1  && \
+    apt-get clean && \
+    apt-get autoclean && \
+    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
 
 # ------------------------------------------------------
 # --- Install Android NDK (for running C code)
 
 # NOTE(@aguestuser|4.23.17)
-# We woud like to use te current version of Android NDK (r14b) but cannot 
+# We would like to use the current version of Android NDK (r14b) but cannot 
 #   due to pinned dependency on year-old version of `ics-openvpn`
 #   which has transitive dependency on `openssl` which will not compile with `clang`
 #   (starting in 13b, android ndk uses `clang` isntead of `gcc`)
diff --git a/docker/android-sdk.dockerfile b/docker/android-sdk.dockerfile
index 4044a7ec333df5c3c7bdffefdd2991bd11af584a..c7c317153239f5b3532e5c7eef32f29825432a08 100644
--- a/docker/android-sdk.dockerfile
+++ b/docker/android-sdk.dockerfile
@@ -1,4 +1,4 @@
-FROM debian:stretch
+FROM 0xacab.org:4567/leap/docker/debian:stretch_amd64
 
 MAINTAINER LEAP Encryption Access Project <info@leap.se>
 LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP" Version="25.2.5"
@@ -6,12 +6,24 @@ LABEL Description="Android SDK baseimage based on debian:stretch" Vendor="LEAP"
 # ------------------------------------------------------
 # --- Install System Dependencies
 
-RUN apt-get update -qq
-RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \
-  # the basics
-  curl unzip git locales \
-  # java stuff
-  openjdk-8-jdk maven
+# Make sure debconf doesn't complain about lack of interactivity
+ENV DEBIAN_FRONTEND noninteractive
+
+# Need docker package in order to do Docker-in-Docker (DIND)
+RUN apt-get update -qq && \
+    apt-get -y dist-upgrade && \
+    apt-get -y install gnupg apt-transport-https
+RUN echo 'deb https://apt.dockerproject.org/repo debian-stretch main'> /etc/apt/sources.list.d/docker.list && \
+    curl -s https://apt.dockerproject.org/gpg | apt-key add -
+RUN apt-get update -qq && \
+    apt-get install -y docker-engine \
+    # the basics
+    curl unzip git locales \
+    # java stuff
+    openjdk-8-jdk maven && \
+    apt-get clean && \
+    apt-get autoclean && \
+    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
 # ------------------------------------------------------
 # --- Set Locales
@@ -58,8 +70,3 @@ RUN sdkmanager "build-tools;23.0.3"
 RUN sdkmanager "platforms;android-25"
 RUN sdkmanager "platforms;android-24"
 RUN sdkmanager "platforms;android-23"
-
-# ------------------------------------------------------
-# --- Cleanup
-
-RUN apt clean