From 10362870dbdd5063e62dde919f4bab764145d3e2 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Fri, 13 Sep 2013 17:58:16 -0600 Subject: [PATCH] Add a few tweaks and fixes to contrib/mkimage-debian.sh Add simple workaround for #1755 to contrib/mkimage-debian.sh Add simple echo patch in contrib/mkimage-debian.sh to prevent init scripts from running during apt-get installs/updates Add `apt-get clean` to mkimage-debian.sh for slightly smaller images Add more small apt tweaks to mkimage-debian.sh thanks to @jpetazzo and @spahl --- contrib/mkimage-debian.sh | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/contrib/mkimage-debian.sh b/contrib/mkimage-debian.sh index 89349e4acc..5b0a47ecb9 100755 --- a/contrib/mkimage-debian.sh +++ b/contrib/mkimage-debian.sh @@ -32,22 +32,33 @@ sudo debootstrap --verbose --variant="$variant" --include="$include" "$suite" "$ cd "$target" -# create the image -img=$(sudo tar -c . | docker import -) +# prevent init scripts from running during install/update +echo $'#!/bin/sh\nexit 101' | sudo tee usr/sbin/policy-rc.d > /dev/null +sudo chmod +x usr/sbin/policy-rc.d +# see https://github.com/dotcloud/docker/issues/446#issuecomment-16953173 -# tag suite -docker tag $img $repo $suite +# shrink the image, since apt makes us fat (wheezy: ~157.5MB vs ~120MB) +sudo chroot . apt-get clean + +# while we're at it, apt is unnecessarily slow inside containers +# this forces dpkg not to call sync() after package extraction and speeds up install +echo 'force-unsafe-io' | sudo tee etc/dpkg/dpkg.cfg.d/02apt-speedup > /dev/null +# we don't need an apt cache in a container +echo 'Acquire::http {No-Cache=True;};' | sudo tee etc/apt/apt.conf.d/no-cache > /dev/null + +# create the image (and tag $repo:$suite) +sudo tar -c . | docker import - $repo $suite # test the image docker run -i -t $repo:$suite echo success if [ "$suite" = "$stableSuite" -o "$suite" = 'stable' ]; then # tag latest - docker tag $img $repo latest + docker tag $repo:$suite $repo latest # tag the specific debian release version ver=$(docker run $repo:$suite cat /etc/debian_version) - docker tag $img $repo $ver + docker tag $repo:$suite $repo $ver fi # cleanup