Alpine Linux, c’est quoi ?

Alpine Linux, c’est quoi ?

Petit condensé d’infos pour débutants !

A l’heure où Docker/Kubernetes sont sur toutes les lèvres, voir même depuis un sacré moment déjà, on a commencé à voir apparaître de nouvelles distributions GNU/Linux axées conteneurisation.

Mais, c’est quoi une distrib’ orientée conteneurs ? Quelles différences avec Ubuntu par exemple ? C’est quoi busybox ? Quelles sont les commandes de base sur Alpine ?

C’est ce qu’on va tâcher de voir ici !

I) L’avantage d’Alpine, CoreOS, Rancher, et cie

Alpine étant sûrement la distribution la plus connue/utilisée par le commun des mortels, on va déjà expliquer les avantages d’un tel OS sur ses confrères plus traditionnels (Ubuntu, Debian, SUSE…) :

  • Légèreté, une image d’Alpine tourne autour des 5Mb environ. Très rapide à démarrer et sans paquets superflus !
  • Qui dit légèreté en taille et packages systèmes, dit aussi OS bien moins gourmand ;
  • Utilise busybox, un « méga-package » contenant des binaires de base sous GNU/Linux, comme echo, ls, cd, sed… ;
  • Orienté sécurité, en limitant le nombre de packages et de dépendances, on réduit de facto la surface d’attaque ! Par exemple, à l’instar d’autres distributions, Alpine utilise musc libc en lieu et place de glibc, qui sont tout deux des bibliothèques pour le langage C. L’avantage de musc libc, c’est que la base logicielle est bien moins complexe et sans davantage de fioritures ;

Vous l’aurez compris, on recherche avant tout quelque chose de léger, stable, et minimaliste au possible.

II) Et comment ça s’utilise ? Ca ressemble à quoi ?

Alpine est identique à la quasi-totalité des autres distributions, il n’y a qu’à se rendre sur le site de téléchargements pour s’en rendre compte : https://alpinelinux.org/downloads/

On peut voir que l’OS est disponible pour énormément d’architectures/plateformes différentes. Légèreté et portabilité !

Au choix, on télécharge l’ISO et on l’installe « en brut », on utilise une Cloud-Image, ou encore via Dockerfile :

Image Cloud
Conteneur Alpine dans VSCode

Bref, rien de très nouveau sous le soleil même comparé à une Ubuntu 😉.

III) APK, NetworkManager, mises à jour…

Vous vous en doutez, à l’usage, on observera tout de même bon nombre de différences notables.

Par exemple, le gestionnaire de paquets se nomme Alpine Package Manager, abrégé en APK. Voici un rapide tableau comparatif avec
apt :

Actionapk (Alpine)apt (Ubuntu)
Mettre à jour la liste des paquetsapk updateapt update
Mettre à jour les paquets installésapk upgradeapt upgrade
Installer un paquetapk add package_nameapt install package_name
Installer un paquet spécifique (version)apk add package_name=1.2.3apt install package_name=1.2.3
Désinstaller un paquetapk del package_nameapt remove package_name
Rechercher un paquetapk search keywordapt search keyword
Lister les paquets installésapk infoapt list --installed
Afficher les infos d’un paquetapk info package_nameapt show package_name
Nettoyer le cacheapk cache cleanapt clean
Recharger les dépôtsapk updateapt update
Forcer la réinstallation d’un paquetapk add --force package_nameapt install --reinstall package_name
Ajouter un dépôtModifier le fichier /etc/apk/repositoriesadd-apt-repository ppa:repo_name

Rien de très compliqué en soit, à titre personnel je trouve la syntaxe même plus facile que via apt 😄

Mais comme dit plus haut, on trouvera aussi des changements au niveau :

  • Du Networking, contrairement à Ubuntu avec son horrible netplan, Alpine se base sur Papa Debian et utilise le bon vieux /etc/network/interfaces pour gérer les cartes réseaux ;
  • Le shell par défaut est shell, et non pas le Bourne-Again Shell, c’est-à-dire le Bash ;
  • Pas de mises à jour automatiques, il faut manuellement effectuer l’apk update et apk upgrade ;
  • Le paquet sudo n’est pas installé par défaut ;

Et enfin, on notera aussi qu’Alpine utilise OpenRC au lieu de SystemD. Alors je ne vais pas commencer un débat sur quel est le meilleur système d’Init car c’est du même ordre qu’Apple vs Android ou Mac vs Windows, mais pour les débutants, sachez simplement que :

Actionsystemd (Ubuntu)OpenRC (Alpine)
Démarrer un servicesystemctl start service_namerc-service service_name start
Vérifier le statut d’un servicesystemctl status service_namerc-service service_name status
Activer un service au démarragesystemctl enable service_namerc-update add service_name
Désactiver un service au démarragesystemctl disable service_namerc-update del service_name

Et puis de toute manière on sait très bien lequel est le meilleur, ça coule de source… 😏

IV) Conclusion

Alors bien sûr j’aurai pu aller encore plus en profondeur, mais le but ici était de démystifier un peu Alpine pour les néophytes. C’est vrai aussi que j’aurai pu parler de RancherOS, où presque chaque service système est conteneurisé, et qui dispose d’une WebUI mais là on partirait d’ores et déjà dans le vaaaaste domaine K8S… chaque chose en son temps !

J’espère donc vous avoir appris quelques bricoles comme à mon habitude, et vous souhaite une bonne journée/soirée !

Tcho !

Laisser un commentaire