First Look at Alpine Linux

"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 upgrade will seem very familiar to Debian users
    • apk stats shows how many packages are installed, what repo you're using, and other details
    • apk dot looks 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 docker shows 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.

Alpine Linux install process Alpine Linux install process Alpine Linux install process Alpine Linux install process Alpine Linux install process Alpine Linux install process Alpine Linux install process Alpine Linux install process