# Infra avancée ## Cours ### Contenerisation - Namespace : les processus ne peuvent pas voir les ressources utilisées par l'hôte ou ses congénères - cgroups : contrôle des ressources allouées à un processus #### Solutions : - Docker / Podman - OpenVZ - Les zones (Solaris) - Les jails (FreeBSD) - LXC ### LXC ``` # Avec interactivté sudo lxc-create -n NOM_CONTENEUR -t download # Sans interactivité (pour script) sudo lxc-create --template=download --name NOM_CONTENEUR -- --dist NOM_DISTRIBUTION --release NUMERO_VERSION --arch amd64 ``` ``` # Démarrer sudo lxc-start -n NOM_CONTENEUR # Entrer dans un conteneur sudo lxc-attach -n NOM_CONTENEUR # Stopper sudo lxc-stop -n NOM_CONTENEUR # Supprimer sudo lxc-destroy -n NOM_CONTENEUR # Lister sudo lxc-ls (--active, --running, --frozen) # Info sur conteneur précis sudo lxc-info -n NOM_CONTENEUR ``` Fichier config du conteneur (/var/lib/lxc/xxx) : ``` # Méthode 1 : Montage d'un dossier de l'hôte lxc.mount.entry = /dossier_hote dossier_interne_conteneur none bind,create=dir 0 0 # Méthode 2 : Montage d'un disque entier ou partition de l'hôte lxc.mount.entry = /dev/disque_ou_partition dossier_interne_conteneur FS_type defaults,create=dir 0 0 ``` ## Exercice 1 https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-xen-3.17.10-x86_64.iso ``` wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.1.0-amd64-netinst.iso mv debian-13.1.0-amd64-netinst.iso debian.iso sudo chmod 666 debian.iso ``` Ensuite ``` sudo virt-install \ --name test-vm \ --os-variant=debiantesting \ --ram 2048 \ --vcpus 2 \ --location ./debian.iso \ --disk path=/var/lib/libvirt/images/vm.qcow2,size=15,format=qcow2 \ --graphics none \ --console pty,target_type=serial \ --extra-args "console=ttys0,115200n8 serial" ``` `virsh attach-interface --type bridge --source enp0s3 --model virtio test-vm` ## Exercice 2 ### Petit A C'est installé. ### Petit B ``` sudo lxc-create -n ConteneurDebian -t download # debian, bullseye, amd64 sudo lxc-start ConteneurDebian sudo lxc-attach ConteneurDebian ### In the container ### uname -a > Linux ConteneurDebian 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64 GNU/Linux cat /proc/version > Linux version 6.1.0-40-amd64 (gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) exit ### Outside the container ### sudo lxc-ls > ConteneurDebian Test-Linux sudo lxc-ls --running > ConteneurDebian sudo lxc-stop ConteneurDebian sudo lxc-ls --running > ``` ### Petit C ``` sudo ls -glAiF /var/lib/lxc/ > ConteneurDebian > Test-Linux sudo ls -glAiF /var/lib/lxc/ConteneurDebian > -rw-r----- root config > drwxr-xr-x root rootfs/ sudo du -h -glAiF /var/lib/lxc/ConteneurDebian > ... > 412M sudo lxc-copy -n ConteneurDebian -N NewConteneur ### -N pour NewName sudo ls -glAiF /var/lib/lxc/ > ConteneurDebian > NewConteneur > Test-Linux ``` ### Petit D ``` sudo nano /var/lib/lxc/ConteneurDebian/config ### Dans le fichier config ### # Folder Attachment lxc.mount.entry = /mnt/lxc-debian-storage /var/lib/lxc/ConteneurDebian/rootfs/data none bind,create=dir 0 0 ### Fin du fichier config ### ```