Public | Automated Build

Last pushed: 2 years ago
Short Description
Automated Alpine Linux Build
Full Description

A super small Docker image based on [Alpine Linux][alpine]. The image is only 5 MB and has access to a package repository that is much more complete than other BusyBox based images.


Docker images today are big. Usually much larger than they need to be. There are a lot of ways to make them smaller, but the Docker populace still jumps to the ubuntu base image for most projects. The size savings over ubuntu and other bases are huge:

REPOSITORY                        TAG           IMAGE ID          VIRTUAL SIZE
wesleycharlesblake/alpine-linux   latest        157314031a17      5.03 MB
debian                            latest        4d6ce913b130      84.98 MB
ubuntu                            latest        b39b81afc8ca      188.3 MB
centos                            latest        8efe422e6104      210 MB

There are images such as progrium/busybox which get us very close to a minimal container and package system. But these particular BusyBox builds piggyback on the OpenWRT package index which is often lacking and not tailored towards generic everyday applications. Alpine Linux has a much more complete and up to date [package index][alpine-packages]:

$ docker run progrium/busybox opkg-install nodejs
Unknown package 'nodejs'.
Collected errors:
* opkg_install_cmd: Cannot install package nodejs.

$ docker run wesleycharlesblake/alpine-linux apk add --no-cache nodejs
(1/4) Installing libgcc (5.3.0-r0)
(2/4) Installing libstdc++ (5.3.0-r0)
(3/4) Installing libuv (1.7.5-r0)
(4/4) Installing nodejs (4.2.3-r0)
Executing busybox-1.24.1-r7.trigger
OK: 29 MiB in 15 packages

This makes Alpine Linux a great image base for utilities and even production applications. [Read more about Alpine Linux here][alpine-about] and you can see how their mantra fits in right at home with Docker images.


Stop doing this:

FROM ubuntu-debootstrap:14.04
RUN apt-get update -q \
  && DEBIAN_FRONTEND=noninteractive apt-get install -qy mysql-client \
  && apt-get clean \
  && rm -rf /var/lib/apt
ENTRYPOINT ["mysql"]

This took 19 seconds to build and yields a 164 MB image. Eww. Start doing this:

FROM wesleycharlesblake/alpine-linux:3.3
RUN apk add --no-cache mysql-client
ENTRYPOINT ["mysql"]

Only 3 seconds to build and results in a 36 MB image! Hooray!


This image is well documented. [Check out the documentation at Viewdocs][docs] and the docs directory in this repository.

Docker Pull Command
Source Repository