Alpine (https://www.alpinelinux.org) ist eine Linux-Distribution, die den Fokus auf geringe Speicherplatzgröße und Geschwindigkeit, sowie Sicherheit legt. Deshalb eignet sie sich besonders für den Einsatz in Firewalls oder VPN-Konfigurationen. Dafür soll sie im komplett RAM laufen und nur von einem schreibgeschützten Medium gebootet werden.
Besonderheiten von Alpine
Es gibt einige Besonderheiten und Unterschiede zwischen Alpine und anderen Linux-Distributionen. So verwendet Alpine nicht das weit verbreitete Systemd als init-Prozess, sondern OpenRC. Zusätzlich wurde für Alpine ein eigener Paketmanager apk entwickelt, um die Anforderungen an Speicherplatz und Geschwindigkeit zu erfüllen. Um weniger Speicherplatz zu verbrauchen, wird BusyBox eingesetzt und statt der verbreiteten Standard Bibliothek glibc setzt Alpine auf musl. Alpine legt großen Wert auf Sicherheit, deswegen ist der Kernel besonders gegen Angriffe gehärtet.
BusyBox
In BusyBox werden viele Tools und Programme in einem executable vereint. Dies führt zu einer sehr kompakt Größe von nur 813 kB und ist sehr effizient. Die Tools brauchen dann nicht mehr selbst installiert werden, stattdessen verweisen sie nur auf BusyBox. Wird also z.B. cp ausgeführt, läuft tatsächlich BusyBox, verhält sich aber wie cp.
Wie im folgenden Bild zu sehen, verweisen alle ausführbaren Programme unter /bin/ auf BusyBox.
Musl
Musl ist eine freie Implementierung der Standard C und POSIX Bibliothek. Im Gegensatz der am weitesten verbreiteten Implementierung glibc, hat Musl einige Vorteile: Es benötigt wesentlich weniger Speicherplatz und ist daher sehr leichtgewichtig. Zusätzlich ist es performanter als glibc.
Paketmanagement
Alpine verwendet einen eigenen Paketmanager apk, der ebenso leichtgewichtig und schnell ist. Der Paketmanager enthält zwar viele Pakete, allerdings kann er mit der Auswahl anderer Paketmanager wie rpm oder apt nicht mithalten. Die folgende List zeigt einige Beispiele für die Benutzung von apk:
- apk add xx: Installiert das Paket xx
- apk del xx: Deinstalliert das Paket xx
- apk update: Aktualisiert die Liste verfügbarer Pakete
- apk upgrade: Aktualisiert alle installierten Programme
- apk search xx: Sucht nach verfügbaren Paketen mit der Beschreibung xx
Fazit
Für den Einsatz auf leistungsschwachen Systemen oder wo eine hohe Performance gefragt ist, ist Alpine aufgrund des geringen Speicherverbrauchs und der hohen Leistung sehr gut geeignet. Da Alpine darauf optimiert ist, vollständig im RAM zu laufen, eignet es sich gut als Docker Container. Docker hat deshalb 2016 seine Image-Basis von Ubuntu Core auf Alpine gewechselt. Um einen neuen Docker Container zu erstellen reicht der Befehl docker run -it alpine.