Creating Your Own Minimal Docker Image in Fedora

Sometimes it can be useful to have a docker image with just the bare essentials. Maybe you want to have a container with just enough to run your app or you are using something like data volume containers and want just enough to browse the filesystem. Either way you can create your own minimalist busybox image on Fedora with a pretty simple script.

The script below was inspired a little from Marek Goldmann’s post about creating a minimal image for wildfly and a little from the busybox website .

# cd to a temporary directory
tmpdir=$(mktemp -d)
pushd $tmpdir

# Get and extract busybox 
yumdownloader busybox 
rpm2cpio busybox*rpm | cpio -imd
rm -f busybox*rpm

# Create symbolic links back to busybox
for i in $(./sbin/busybox --list);do
    ln -s /sbin/busybox ./sbin/$i
done

# Create container
tar -c . | docker import - mybusybox

# Go back to old pwd
popd


After running the script there is a new image on your system with the mybusybox tag. You can run it and take a look around like so:

[root@localhost ~]# docker images mybusybox
REPOSITORY  TAG      IMAGE ID        CREATED          VIRTUAL SIZE
mybusybox   latest   f526db9e0d80    12 minutes ago   1.309 MB
[root@localhost ~]#
[root@localhost ~]# docker run -i -t mybusybox /sbin/busybox sh
# ls -l /sbin/ls
lrwxrwxrwx   1 0    0    13 Jul  8 02:15 /sbin/ls -> /sbin/busybox
# 
# ls /
dev   etc   proc  sbin  sys   usr
# 
# df -kh .
Filesystem                Size      Used Available Use% Mounted on
/dev/mapper/docker-253:0-394094-addac9507205082fbd49c8f45bbd0316fd6b3efbb373bb1d717a3ccf44b8a97e
                          9.7G     23.8M      9.2G   0% /


Enjoy!

Dusty