Use docker import/export to make image smaller

Using docker export gives us only the top filesystem layer and not all
the layers used to build. Resulting image is about 20% smaller. Further
optimizations will be made in future commits via removing build time
deps and temporary files in the Dockerfile.

Change-Id: I0f7ad6d00c6f47836dcd71b05907076701bb2789
(cherry picked from commit 99dba22eaa3961234abde1294e55026fd2cc9d4d)
This commit is contained in:
Jay Faulkner 2014-04-15 17:18:18 -07:00
parent 8edf98a199
commit 5516cd5baf
4 changed files with 8 additions and 5 deletions

View File

@ -4,7 +4,7 @@ docker:
./docker_build.bash ./docker_build.bash
coreos: coreos:
mkdir UPLOAD mkdir -p UPLOAD
./coreos-oem-inject.py oem UPLOAD ./coreos-oem-inject.py oem UPLOAD
clean: clean:
@ -12,6 +12,7 @@ clean:
rm -f oem/container.tar.gz rm -f oem/container.tar.gz
rm -f UPLOAD/coreos_production_pxe_image-oem.cpio.gz rm -f UPLOAD/coreos_production_pxe_image-oem.cpio.gz
rm -f UPLOAD/coreos_production_pxe.vmlinuz rm -f UPLOAD/coreos_production_pxe.vmlinuz
rm -rf ../.image_cache
docker_clean: docker_clean:
./docker_clean.bash ./docker_clean.bash

View File

@ -8,7 +8,7 @@ import tempfile
import shutil import shutil
from plumbum import local, cmd from plumbum import local, cmd
COREOS_VERSION="dev-channel" COREOS_VERSION="197.0.0"
COREOS_ARCH="amd64-generic" COREOS_ARCH="amd64-generic"
COREOS_BASE_URL="http://storage.core-os.net/coreos/{}/{}".format(COREOS_ARCH, COREOS_VERSION) COREOS_BASE_URL="http://storage.core-os.net/coreos/{}/{}".format(COREOS_ARCH, COREOS_VERSION)

View File

@ -23,4 +23,7 @@ cd -
# TODO: Investigate running a container and using "export" to flatten the # TODO: Investigate running a container and using "export" to flatten the
# image to shrink the CoreOS fs size. This will also require run.sh to # image to shrink the CoreOS fs size. This will also require run.sh to
# use docker import instead of docker load as well. # use docker import instead of docker load as well.
docker save oemdocker | gzip > ${OUTPUT_FILE} docker run oemdocker echo PICKME
CONTAINER=`docker ps -a |grep PICKME|awk '{print $1}'|head -n1`
echo $CONTAINER
docker export $CONTAINER | gzip > ${OUTPUT_FILE}

View File

@ -24,8 +24,7 @@ while [ ! -e /var/run/docker.sock ]; do
sleep 1; sleep 1;
done done
# TODO: Use docker import (and export the image) to shrink image size docker import - oemdocker:latest < container.tar.gz
docker load < container.tar.gz
systemctl enable --runtime /usr/share/oem/system/* systemctl enable --runtime /usr/share/oem/system/*
systemctl start ironic-python-agent.service systemctl start ironic-python-agent.service