Sign inSign up

philcryer/min-wheezy

By philcryer

Updated almost 11 years ago

A minimally generated Debian GNU/Linux 7 (wheezy) Docker image (size: 50.76 MB)

Image
6

10K+

philcryer/min-wheezy repository overview

Overview

Most people running Docker are using huge images with needless applications installed and taking up space for their containers. Meanwhile, if you search in the Docker Registry for 'debian minimal' you'll come across some images that are over 260 MB! Whenever I build a new server I install Debian/GNU Linux doing a Network install from a minimal CD which only includes the minimal base OS. My goal is to recreate this for Docker, starting with a base Debian install, and then removing things in that minimal install that are not needed by Docker, while leaving (some) basic *nix utilities in place. After this I use docker-squash tool to free a few more bits in the container before committing and checking in the image here.

Usage

If you just want to use this image, pull it and configure what you want:

docker pull philcryer/min-wheezy

To use this image in your own project, use this FROM line in your Dockerfile:

FROM philcryer/min-wheezy:latest

Build

In the interest of Open Source and transparency, here are the steps I've taken to build this image.

Pull the official base Debian Wheezy image

See Debian Official Docker page for information on this container

docker pull debian:wheezy

Get the image ID and run the container

Notice how small it is to start with

# docker images | tail -n1
debian                      wheezy              f6fab3b798be        4 weeks ago          85.1 MB

Run and enter the new container

docker run -i -t f6fab3b798be /bin/bash

Inside the container, run the following

apt-get update && apt-get upgrade -y 
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y
cp -R /usr/share/locale/en\@* /tmp/ && rm -rf /usr/share/locale/* && mv /tmp/en\@* /usr/share/locale/
rm -rf /var/cache/debconf/*-old && rm -rf /var/lib/apt/lists/* && rm -rf /usr/share/doc/*
echo "`cat /etc/issue.net` Docker Image - philcryer/min-wheezy - `date +'%Y/%m/%d'`" > /etc/motd
exit

Commit those changes

# docker ps -a | head -n2
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
9fd99c47de64        debian:wheezy       "/bin/bash"         3 minutes ago       Exited (0) 12 seconds ago                       insane_newton

# docker commit  9fd99c47de64
3dd7dab3803b2bb507a576119ac3daf3de9f700cbf0e80127acc04a85891c0d4

Squash the image and get its new ID

# docker save 3dd7dab3803b2bb507a576119ac3daf3de9f700cbf0e80127acc04a85891c0d4 | docker-squash -from root -t philcryer/min-wheezy | docker load

Check the final size

# docker images | head -n2
REPOSITORY             TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
philcryer/min-wheezy   latest              243925c5b6ed        12 seconds ago       50.76 MB

Push it to the Docker registry

docker push philcryer/min-wheezy

Results

Pull the image and check the size:

# docker pull philcryer/min-wheezy:latest
Pulling repository philcryer/min-wheezy
243925c5b6ed: Download complete
511136ea3c5a: Download complete
dbb9d41e1af3: Download complete
Status: Downloaded newer image for philcryer/min-wheezy:latest

# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
philcryer/min-wheezy   latest              243925c5b6ed        2 minutes ago       50.76 MB

Container details

For reference, this Docker container will contain the following:

Kernel

# uname -a
Linux cbfd8af55155 3.16.0-4-amd64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64 GNU/Linux

And installed packages

# dpkg --get-selections
apt						install
base-files					install
base-passwd					install
bash						install
bsdutils					install
coreutils					install
dash						install
debconf						install
debconf-i18n					install
debian-archive-keyring				install
debianutils					install
diffutils					install
dpkg						install
e2fslibs:amd64					install
e2fsprogs					install
findutils					install
gcc-4.7-base:amd64				install
gnupg						install
gpgv						install
grep						install
gzip						install
hostname					install
inetutils-ping					install
initscripts					install
insserv						install
iproute						install
libacl1:amd64					install
libapt-pkg4.12:amd64				install
libattr1:amd64					install
libblkid1:amd64					install
libbz2-1.0:amd64				install
libc-bin					install
libc6:amd64					install
libcomerr2:amd64				install
libdb5.1:amd64					install
libgcc1:amd64					install
liblocale-gettext-perl				install
liblzma5:amd64					install
libmount1					install
libncurses5:amd64				install
libpam-modules:amd64				install
libpam-modules-bin				install
libpam-runtime					install
libpam0g:amd64					install
libreadline6:amd64				install
libselinux1:amd64				install
libsemanage-common				install
libsemanage1:amd64				install
libsepol1:amd64					install
libslang2:amd64					install
libss2:amd64					install
libstdc++6:amd64				install
libtext-charwidth-perl				install
libtext-iconv-perl				install
libtext-wrapi18n-perl				install
libtinfo5:amd64					install
libusb-0.1-4:amd64				install
libustr-1.0-1:amd64				install
libuuid1:amd64					install
login						install
lsb-base					install
mawk						install
mount						install
multiarch-support				install
ncurses-base					install
ncurses-bin					install
netbase						install
passwd						install
perl-base					install
readline-common					install
sed						install
sensible-utils					install
sysv-rc						install
sysvinit					install
sysvinit-utils					install
tar						install
tzdata						install
util-linux					install
xz-utils					install
zlib1g:amd64					install

Feedback

This is one of my first Docker images (see all of them here) so please give me feedback in the comments. Thanks!

Tag summary

Content type

Image

Digest

sha256:a8645f64f

Size

20.9 MB

Last updated

almost 11 years ago

docker pull philcryer/min-wheezy