"Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox" (so says their website). Wikipedia adds that it was 'primarily designed for "power users who appreciate security, simplicity and resource efficiency,' and was originally a fork of the LEAF Project ("Linux Embedded Appliance Framework"). It's also stated fairly explicitly that they're concentrating on being a Linux for containers. Some notes I took while installing it:
- Alpine 3.4.3 includes kernel 4.4.21
- choice of dropbear or openssh (or none) for SSH server during installation
- OpenRC init system (not systemd) ... I don't even know it
- uses chronyd for cron (if not busybox)
- provides a version for bare metal install (83MB ISO), and another for virtual machines (30MB ISO, I'd guess because they've cut out all the drivers you can't possibly need from the kernel)
- full Virtual install uses under 80MB of disk space
- has own packaging system - apk
apk update ; apk upgradewill seem very familiar to Debian users
apk statsshows how many packages are installed, what repo you're using, and other details
apk dotlooks interesting, with a short description of "Generate graphviz graphs" - something I've tinkered with - mostly unsuccessfully - for years with Debian ... now it's built into the tool
apk search dockershows nothing. Which makes sense when you remember it's meant to be the image/container, NOT the host.
- with docker, you can get an image with
docker pull alpine:latest- it's a whopping 2.3MB download
- something that may or may not be an issue: when I left the virtual Alpine running (doing nothing) for 48 hours, it rather suddenly drove the resource usage of the whole machine through the roof (a load of 28 ...). I was unable to shut it down cleanly.
The system being based on musl libc means that binaries compiled on most other Linuxes (which are based on glibc/gcc) WON'T work on Alpine, so your containers are restricted to their packages and stuff you've built specifically for musl. Much of what I'm doing with Docker right now includes basic packages that Alpine includes, just like any other version of Linux - but I can see this being limiting later. Of course you could still use Alpine for anything it supports, and mix in Debian-based images for stuff it doesn't: the extremely small size is very appealing.
The install process is detailed and technical, but has good defaults that'll be applied if you don't change them and it's fairly straight-forward if you've ever done a text-based install of an older style of Linux. I've included screen shots of most of the process below.