Ldfa Posté(e) le 30 décembre 2019 Partager Posté(e) le 30 décembre 2019 Cet article est le 1er d’une longue lignée (enfin, j’espère) sur LXC et ses utilisations. LXC est un système de virtualisation, mais contrairement à une machine virtuelle, LXC simule l’environnement d’exécution, et non la machine complète. LXD est une surcouche à LXC, développée par Canonical. LXD étant un daemon qui expose une API REST, permettant de contrôler LXC. Dans ce 1er article, nous allons voir l’utilisation de LXC à la mano : on va créer nos conteneurs, les snapshoter, les supprimer, les dupliquer. Dans un futur proche, on fera les mêmes opérations, mais via ansible 😉 Ma machine hôte, mon porte-conteneurs, tourne sous Ubuntu 18.04 (la dernière ubuntu LTS à date) : carmelo@pc-home-02:~$ cat /etc/issue Ubuntu 18.04.2 LTS \n \l Tout d’abord, j’installe LXD, via snap : carmelo@pc-home-02:~$ sudo snap install lxd [sudo] password for carmelo: Fetch and check assertions for snap "lxd" (12181) Mount snap "lxd" (12181) Mount snap "lxd" (12181) Mount snap "lxd" (12181) lxd 3.18 from Canonical✓ installed Ensuite, je passe à l’initialisation : carmelo@pc-home-02:~$ lxd init Would you like to use LXD clustering? (yes/no) [default=no]: no Do you want to configure a new storage pool? (yes/no) [default=yes]: yes Name of the new storage pool [default=default]: default Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: btrfs Create a new BTRFS pool? (yes/no) [default=yes]: yes Would you like to use an existing block device? (yes/no) [default=no]: no Size in GB of the new loop device (1GB minimum) [default=19GB]: 50GB Would you like to connect to a MAAS server? (yes/no) [default=no]: no Would you like to create a new local network bridge? (yes/no) [default=yes]: yes What should the new bridge be called? [default=lxdbr0]: lxdbr0 What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none Would you like LXD to be available over the network? (yes/no) [default=no]: yes Address to bind LXD to (not including port) [default=all]: all Port to bind LXD to [default=8443]: 8443 Trust password for new clients: Again: Would you like stale cached images to be updated automatically? (yes/no) [default=yes] yes Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes config: core.https_address: '[::]:8443' core.trust_password: mot_de_passe_choisi networks: - config: ipv4.address: auto ipv6.address: none description: "" managed: false name: lxdbr0 type: "" storage_pools: - config: size: 50GB description: "" name: default driver: btrfs profiles: - config: {} description: "" devices: eth0: name: eth0 nictype: bridged parent: lxdbr0 type: nic root: path: / pool: default type: disk name: default cluster: null carmelo@pc-home-02:~$ Création d’un conteneur Voilà, on peut passer à la création de notre 1er conteneur. Pour cet exemple, je choisis d’intialiser un conteneur sous Ubuntu 19.04 : carmelo@pc-home-02:~$ lxc launch ubuntu:19.04 ubuntu1904-001 Creating ubuntu1904-001 Starting ubuntu1904-001 carmelo@pc-home-02:~$ Lister les conteneurs disponibles Afin de lister les conteneurs disponibles sur le système, qu’ils soient lancés ou arrêtés, on utilise la commande "lxc list" : carmelo@pc-home-02:~$ lxc list +----------------+---------+-----------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +----------------+---------+-----------------------+------+------------+-----------+ | ubuntu1904-001 | RUNNING | 10.179.231.176 (eth0) | | PERSISTENT | 0 | +----------------+---------+-----------------------+------+------------+-----------+ carmelo@pc-home-02:~$ Démarrer / arrêter un conteneur Pour ce faire, "lxc start" ou "lxc stop" sont là ;: carmelo@pc-home-02:~$ lxc start ubuntu1904-001 carmelo@pc-home-02:~$ lxc stop ubuntu1904-001 Interagir avec le shell d’un conteneur carmelo@pc-home-02:~$ lxc shell ubuntu1904-001 mesg: ttyname failed: No such device root@ubuntu1904-001:~# Pour sortir du shell, on tape soit exit, soit Ctrl+d. Supprimer un conteneur : lxc delete ubuntu1904-001 Si le conteneur est encore lancé, on peut forcer la suppression avec l’option -f : lxc delete -f ubuntu1904-001 Créer un snapshot LXC permet de créer un snapshot d’un conteneur, afin de garder un état du conteneur, et de pouvoir y revenir en cas de besoin : carmelo@pc-home-02:~$ lxc snapshot ubuntu1904-001 mon1erSnapshot carmelo@pc-home-02:~$ Obtenir des infos sur un conteneur : carmelo@pc-home-02:~$ lxc info ubuntu1904-001 Name: ubuntu1904-001 Remote: unix:// Architecture: x86_64 Created: 2019/10/12 11:58 UTC Status: Running Type: persistent Profiles: default Pid: 5407 Ips: eth0: inet 10.179.231.114 veth8J607L eth0: inet6 fe80::216:3eff:fec0:3662 veth8J607L lo: inet 127.0.0.1 lo: inet6 ::1 Resources: Processes: 41 CPU usage: CPU usage (in seconds): 14 Memory usage: Memory (current): 334.40MB Memory (peak): 337.56MB Network usage: eth0: Bytes received: 518.57kB Bytes sent: 13.64kB Packets received: 123 Packets sent: 116 lo: Bytes received: 1.62kB Bytes sent: 1.62kB Packets received: 19 Packets sent: 19 Snapshots: mon1erSnapshot (taken at 2019/10/12 11:58 UTC) (stateless) carmelo@pc-home-02:~$ Voilà qui conclue cette découverte de LXC, au prochain épisode : Partager : Articles similaires Afficher l’article complet Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.