A small distro intended for assembling minimal docker images. The idea
is that your docker image will contain only what is necessary and
I was appalled that the golang-runtime docker images were hundreds of
MB, for what should be essentially glibc and a mostly statically
linked binary. The available alternatives were basically
scratch and do it yourself
or the busybox image,
both of which are "too minimal" and require additional work to build
on. "BoxFactory" is my solution to this.
boxfactory-base is about
20MB and includes a busybox shell environment, glibc, and just enough
to be able to install additional packages. No kernel, no udev, no
sshd. When you need more, it's just an
opkg install away.
This is a trivial use of yocto/openembedded to build docker filesystem
images, and any credit should go to those projects.
FROM anguslees/boxfactory-base RUN opkg update && opkg install apache2 EXPOSE 80 CMD ["/usr/sbin/apache2"]
anguslees/boxfactory-base- minimal image
anguslees/boxfactory-python2- base + python2.7 + pip + virtualenv
anguslees/boxfactory-python3- base + python3.3 + pip + virtualenv
anguslees/boxfactory-perl- base + perl
anguslees/boxfactory-ruby- base + ruby
If you think you have another combination that would be useful,
just ask or send a github pull request.
To see the latest list of packages available:
docker run --rm -ti boxfactory-base opkg update opkg list
If there's a particular piece of software you were surprised was
missing from that list, let me know.
Note this is not necessary to use boxfactory and will hasten the heat
death of the universe.
git clone https://github.com/anguslees/boxfactory.git cd boxfactory git submodule update --init git clone -b 1.28 git://git.openembedded.org/bitbake oe/oe-core/bitbake cd oe source oe-core/oe-init-build-env
At this point you can run
bitbake docker-image-minimal to build the
original root filesystem used in
name> to build a particular package. If you have lots of disk and
bitbake -k world will attempt to build every package
possible (some will fail).