L’informatique, c’est vite compliqué. Pour vous simplifier la vie, pensez au principe KISS [1]. Dans le monde des containers, LXC c’est un bon vieux chroot (une fonctionnalité UNIX de 1979), avec une sécurité améliorée par l’utilisation des « control groups » (ou « cgroups », qui datent de 2007) . Nous allons les découvrir via un cas pratique : l’installation d’un site web.
Les commandes de cet article ont été réalisées sur une Debian 11 (Bullseye). Elles doivent être exécutées sous le compte root, comme le montre l’invite #. Debian fournit une documentation LXC sur son wiki officiel : [4].
Les containers sont de plus en plus utilisés en entreprise, car ils amènent de nombreux avantages :
- portabilité : un container est indépendant de la distribution hôte, et de l’architecture (locale ou cloud) ;
- sécurité : en cas d’attaque et de compromission du container, il est plus difficile de compromettre la machine hôte (surtout en mode non privilégié) ;
- rapidité : parce qu’il n’y a pas d‘émulation, un container se crée en moins d’une minute, se lance en quelques secondes, et s’exécute comme une application native ;
- scalabilité : si les applications sont conçues pour, la montée en charge se fait en rajoutant des containers, ce qui est rapide ;
- isolation : les containers permettent de gérer les...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[1] Faire simple : https://fr.wikipedia.org/wiki/Principe_KISS/
[2] Cédric Pellerin, « LXC, l’autre star des conteneurs », Linux Pratique n°117, janvier 2020 :
https://connect.ed-diamond.com/Linux-Pratique/lp-117/lxc-l-autre-star-des-conteneurs
[3] Cédric Pellerin, « LXC, les options avancées utiles en production », Linux Pratique n°118, mars 2020 :
https://connect.ed-diamond.com/Linux-Pratique/lp-118/lxc-les-options-avancees-utiles-en-production
[4] Le wiki officiel de Debian : https://wiki.debian.org/fr/LXC
[5] Les principes généraux de sécurité dans LXC : https://linuxcontainers.org/lxc/security/
[6] Tout sur LVM : https://tldp.org/HOWTO/LVM-HOWTO/
[7] Une liste d’images de distributions disponibles : http://images.linuxcontainers.org/
[8] Serveur de clefs : https://linuxcontainers.org/lxc/getting-started/
[9] Comment convertir un container privilégié : https://wiki.archlinux.org/index.php?title=Linux_Containers#Converting_a_privileged_container_to_an_unprivileged_container
[10] Le code source de uidmapshift :
https://bazaar.launchpad.net/%7Eserge-hallyn/+junk/nsexec/view/head:/uidmapshift.c
[11] Un autre outil pour passer un container en mode non privilégié :
https://github.com/unmanarc/lxc-remap
[12] Installation d’Apache sur Alpine : https://wiki.alpinelinux.org/wiki/Apache
[13] La documentation officielle des cgroups v2 :
https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html
[14] Une rare documentation en français sur la v2 :
https://www.linuxembedded.fr/2021/11/limiter-les-ressources-dune-ligne-de-commande-avec-systemd
[15] La documentation de NGINX https://nginx.org/en/docs/http/load_balancing.html
[16] Un métasite de recherche de package, quel que soit le format : https://pkgs.org
[17] Éric Gerbier, «Faites-vous de bonnes sauvegardes ?», Linux Pratique HS n°51, juin 2021 :
https://connect.ed-diamond.com/Linux-Pratique/lphs-051/faites-vous-de-bonnes-sauvegardes
[18] Éric Gerbier, «Tomoyo, le contrôle d’accès facile», Linux Magazine n°235, mars 2020 :
https://connect.ed-diamond.com/GNU-Linux-Magazine/glmf-235/tomoyo-le-controle-d-acces-facile
[19] L’essentiel sur les capabilities : https://linux-audit.com/linux-capabilities-101/
[20] Infrastructure as Code : https://fr.wikipedia.org/wiki/Infrastructure_as_code
[21] Ansible lxc_container : https://docs.ansible.com/ansible/latest/collections/community/general/lxc_container_module.html
[21] Ansible LXC : https://docs.ansible.com/ansible/latest/collections/community/general/lxc_connection.html
[23] Une solution de virtualisation : https://pve.proxmox.com/wiki/Linux_Container
[24] https://doc.ubuntu-fr.org/lxc - https://wiki.gentoo.org/wiki/LXC - https://wiki.archlinux.org/title/Linux_Containers