diff --git a/install/11_docker.sh b/install/11_docker.sh
index d7ac6ca3dc3050a3fe1c2941789bdc02e374d52e..0d9ea5b98ac10d51da5fdc9cb651b72132513059 100755
--- a/install/11_docker.sh
+++ b/install/11_docker.sh
@@ -4,7 +4,8 @@ set -e # Exit on errors
 
 mkdir -p $JENKINS_HOME/tools/docker/bin
 curl -s https://get.docker.io/builds/Linux/x86_64/docker-latest -o $JENKINS_HOME/tools/docker/bin/docker
-chmod 755 $JENKINS_HOME/tools/docker/bin/docker
+cp ${0%/*}/docker/docker-build.sh $JENKINS_HOME/tools/docker/bin
+chmod 755 $JENKINS_HOME/tools/docker/bin/*
 
 echo "export PATH=$JENKINS_HOME/tools/docker/bin:\$PATH" > /etc/profile.d/docker.sh
 chmod 755 /etc/profile.d/docker.sh
diff --git a/install/docker/docker-build.sh b/install/docker/docker-build.sh
new file mode 100644
index 0000000000000000000000000000000000000000..37c6009317dcb2a1fd12d8d3f7c398cef5564836
--- /dev/null
+++ b/install/docker/docker-build.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+
+set -e # Exit on errors
+
+# Extract info from Dockerfile
+
+DOCKER_REPOSITORY=`grep '^# REPOSITORY' Dockerfile | awk -F ' ' '{print $3}'`
+if [ ! ${DOCKER_REPOSITORY:+x} ]; then
+    DOCKER_REPOSITORY=`echo 'registry.codemate.se/'${PWD##*/}`
+fi
+
+DOCKER_TAG=`grep '^# VERSION' Dockerfile | awk -F ' ' '{print $3}'`
+if [ ! ${DOCKER_TAG:+x} ]; then
+    DOCKER_TAG='1.0.0'
+fi
+
+# Build and publish image
+
+docker build -rm -t $DOCKER_REPOSITORY .
+docker tag $DOCKER_REPOSITORY $DOCKER_REPOSITORY:$DOCKER_TAG
+docker push $DOCKER_REPOSITORY
+
+set +e # Ignore errors
+
+# Remove stopped containers
+
+for CONTAINER in $(docker ps -a | awk '/Exit -?[0-9]+/ { print $1 }'); do
+    docker rm $CONTAINER
+done
+
+# Remove untagged images
+
+for IMAGE in $(docker images | awk '/^<none>/ { print $3 }'); do
+    docker rmi $IMAGE
+done
+
+exit 0
\ No newline at end of file