Canonical has made Linux containers really easy with Snaps. Don’t get me wrong, we still have to configure it, but if you look here, it’s as simple as 1,2,3: https://canonical.com/lxd/install (f you try to install the apt, it will launch the Snap package anyway). OK all you Ubuntu mechanics, grab that virtual spanner and let’s get cracking! That includes YOU, lazy bones; fire up your terminal and rev those engines! Before you follow me down this rabbit hole, let's install lxd and then I will take you through our configuration. Start by making sure all your Snaps are up-to-date: sudo snap refresh - and let it do its thing, before running: sudo snap install lxd As you can see from Canonical’s site, there isn’t much to do other than initialise the application. Type: lxd init and let’s navigate the questions together? (We do this only the very first time, so don’t worry too much). We pretty much stick with the defaults. However, you may name your storage pool anything you like; for our tutorial, I’ll just name it fcmpool, or something similar, and we will use dir instead of zfs. We can type out the yes & no, but we can also just press enter to confirm the defaults. I will do both so you can see. It is only IPv6 where I select “none”, and once you are done, you have the option of printing a YAML file for future reference.
Canonical a rendu les conteneurs Linux vraiment faciles avec Snaps. Ne vous méprenez pas, nous devons toujours le configurer, mais si vous regardez ici, c'est aussi simple que 1,2,3 : https://canonical.com/lxd/install (si vous essayez de l'installer avec apt, il lancera de toute façon le package Snap). OK, vous tous mécaniciens d'Ubuntu, prenez cette clé virtuelle et mettons-nous au travail ! Cela vous inclut, vous, les paresseux ; démarrez votre terminal et faites tourner les moteurs !
Avant de me suivre dans ce terrier de lapin, installons lxd, puis je vous guiderai dans notre configuration. Commencez par vous assurer que tous vos Snaps sont à jour :
sudo snap refresh
et laissez-le faire son travail, avant d'exécuter :
sudo snap install lxd
Comme vous pouvez le voir sur le site de Canonical, il n'y a pas grand-chose à faire à part initialiser l'application. Tapez : lxd init et parcourons les questions ensemble. (Nous ne le faisons que la toute première fois, donc ne vous inquiétez pas trop). Nous nous en tenons à peu près aux valeurs par défaut. Cependant, vous pouvez nommer votre pool de stockage comme vous le souhaitez ; pour notre tutoriel, je l’appellerai simplement fcmpool, ou quelque chose de similaire, et nous utiliserons dir au lieu de zfs. Nous pouvons taper oui et non, mais nous pouvons également appuyer simplement sur Entrée pour confirmer les valeurs par défaut. Je ferai les deux pour que vous puissiez voir. C’est uniquement pour IPv6 que je sélectionne « aucun » et, une fois que vous avez terminé, vous avez la possibilité d’imprimer un fichier YAML pour référence ultérieure.
You can check if it is operational - ps -aux | grep lxd and you should see that shown below right. Now that we have LXD running, let’s confirm there are no ‘running’ containers: lxc list We can also now confirm that there are no images on the system:lxc images list Great, a blank slate! (Ok not really, we have some repos configured for us); lxc remote list - to see them. If you hold down the CTRL key and click on the very first link, it will open that link in a browser for you (https://images.lxd.canonical.com/). You may see that images are built daily, but even then, these are not “official” images. We can even go look on: https://images.linuxcontainers.org/ - to see what is available for us to play with.
Vous pouvez vérifier si c'est opérationnel : ps -aux | grep lxd
et vous devriez voir cela affiché ci-dessous à droite.
Maintenant que LXD est en cours d'exécution, confirmons qu'il n'y a pas de conteneurs en cours d'exécution :
lxc list
Nous pouvons également maintenant confirmer qu'il n'y a pas d'images sur le système :
lxc image list
Super, une page blanche ! (Ok pas vraiment, il y a des dépôts configurés pour nous); pour les voir :
lxc remote list
Si vous maintenez la touche CTRL enfoncée et cliquez sur le tout premier lien, il ouvrira ce lien dans un navigateur pour vous (https://images.lxd.canonical.com/).
Vous pouvez voir que des images sont créées quotidiennement, mais même dans ce cas, ce ne sont pas des images « officielles ».
Nous pouvons même aller voir : https://images.linuxcontainers.org/ - pour voir ce qui est disponible pour que nous puissions jouer avec.
Now, back to the very first page link ^^^^^ right at the top, and you will see the syntax is: lxc launch <image_server>:<image_name> <instance_name> with an example: lxc launch ubuntu:22.04 ubuntu-container You just have to remember ‘lxc launch’, but let’s go ahead and do the thing… you know, copy/paste from the website. OR you can try the command they give you once you typed lxc list. I’m not going to type it here, just to make sure you are ‘doing’, when following along, as this is all going to be ‘hands-on’. Woot! If you are here with me, well done! If you are struggling to launch anything other than the examples, type lxc list again and peruse the output. You will see NAME, URL, PROTOCOL … That first column, NAME, tells you how to check out something from the repo. If I look at the community image server, you will see that it starts with ALMA linux in the distribution column, then we have ‘release’, ‘architecture’, ‘variant’, and so forth. We will use ALPINE as an example as it is tiny. Keep in mind that by the time this publishes, the versions would have moved on, so do not just blindly copypasta me here, I am trying to teach you to fish on your own. So, lxc launch (you remember this) images: (the name in the first column) alpine/3.20 (distribution name / version) apline (the name on my system, can be anything) So are we all on the same page? Good! I installed Ubuntu and Alpine, so you can see the difference in size: 241MB vs 3MB, so those of you on metered or slow connections, stick to Alpine, so we can go forward. Let’s drive this sucker!
Maintenant, revenons au lien de la toute première page ^^^^^ tout en haut, et vous verrez que la syntaxe est : lxc launch <image_server>:<image_name> <instance_name> avec un exemple :
lxc launch ubuntu:22.04 ubuntu-container
Vous devez juste vous souvenir de « lxc launch », mais allons-y et faisons-le… vous savez, copier/coller à partir du site Web. OU vous pouvez essayer la commande qu'ils vous donnent une fois que vous avez tapé lxc list. Je ne vais pas le taper ici, juste pour m'assurer que vous faites des choses, lorsque vous me suivez, car tout ceci va être « pratique ».
Woot !
Si vous êtes ici avec moi, bravo ! Si vous avez du mal à lancer autre chose que les exemples, tapez à nouveau lxc list et parcourez le résultat. Vous verrez NAME, URL, PROTOCOL… Cette première colonne, NAME, vous indique comment extraire quelque chose du dépôt. Si je regarde le serveur d'images de la communauté, vous verrez qu'il commence par ALMA linux dans la colonne de distribution, puis nous avons « release », « architecture », « variant », etc. Nous utiliserons ALPINE comme exemple car il est minuscule. Gardez à l'esprit qu'au moment de la publication de cet article, les versions auront évolué, alors ne vous contentez pas de faire du copier-coller aveuglément, j'essaie de vous apprendre à pêcher par vous-même.
Donc, lxc launch (vous vous souvenez de cela) images : (le nom dans la première colonne) alpine/3.20 (nom de la distribution/version) apline (le nom sur mon système, peut être n'importe quoi)
Alors, sommes-nous tous sur la même longueur d'onde ? Bien ! J'ai installé Ubuntu et Alpine, afin que vous puissiez voir la différence de taille : 241 Mo contre 3 Mo, donc ceux d'entre vous qui ont des connexions limitées ou lentes, restez sur Alpine, afin que nous puissions avancer.
Continuons !
To stop our running container, we simply say ‘stop’
lxc stop alpine
(You can use tab completion if you were stopping ‘inviting-bird’, for instance).
So if we stop something, we can start it again with start; I’ll let you figure that one out…
We can also ‘delete’ a container, as long as it is in the ‘stopped’ state. If you have 2, like I do, try to delete them both as is – and you should get an error on one.
lxc delete alpine
I do not recommend using the - -force Luke! You will see it in the error message.
Know that if you delete a container, you do *not automatically delete the image also, so don’t be afraid to delete both; you have the image, so to spin up a clone is quicker than you think! To delete images, you can use ‘image delete’ so: lxc image delete 58ec (in my case).
Pay attention to your image’s fingerprint, you need to type up only to where it becomes unique, you do not have to type out the whole shebang.
Pour arrêter notre conteneur en cours d'exécution, nous disons simplement « stop » :
lxc stop alpine
(Vous pouvez utiliser la saisie semi-automatique si vous arrêtiez « inviting-bird », par exemple.)
Si nous arrêtons quelque chose, nous pouvons le redémarrer avec start ; je vous laisse le découvrir… MDR
Nous pouvons également « supprimer » un conteneur, s'il est dans l'état « arrêté ». Si vous en avez 2, comme moi, essayez de les supprimer tous les deux tels quels - et vous devriez obtenir une erreur sur l'un d'eux.
lxc delete alpine
Je ne recommande pas d'utiliser le –force, Luke ! Vous le verrez dans le message d'erreur.
Sachez que si vous supprimez un conteneur, vous ne supprimez pas automatiquement l'image également ; alors n'ayez pas peur de supprimer les deux ; vous avez l'image, donc lancer un clone est plus rapide que vous ne le pensez ! Pour supprimer des images, vous pouvez utiliser « image delete » : lxc image delete 58ec (dans mon cas).
Faites attention à l’empreinte digitale de votre image ; vous devez saisir uniquement l’endroit où elle devient unique, vous n’avez pas besoin de saisir tout le texte.
You may have noticed that once you downloaded the image, it spun up and was ready to use immediately. If you do not want this behaviour, you can ‘copy’ the image only. lxc image copy images:alpine/3.17 local: –alias alpinelocal (list your images and see). Now if/when I need alpine, I can simply say: lxc launch alpinelocal jokeapp This would give it a alias of jokeapp if I had an app that dispensed jokes, for instance. That’s it, our first dip into the ocean of containers, right on your Ubuntu desktop! Come see me next issue and we can continue, right here on FCM! As always, mistakes to: misc@fullcirclemagazine.org
Vous avez peut-être remarqué qu'une fois l'image téléchargée, elle a démarré et était prête à être utilisée immédiatement. Si vous ne voulez pas ce comportement, vous pouvez « copier » uniquement l'image.
lxc image copy images:alpine/3.17 local: –alias alpinelocal
(listez vos images et voyez).
Maintenant, si/quand j'ai besoin d'alpine, je peux simplement dire :
lxc launch alpinelocal jokeapp
Cela lui donnerait l'alias « jokeapp » si j'avais une application qui distribuait des blagues, par exemple.
C'est tout, notre premier plongeon dans l'océan des conteneurs, directement sur votre bureau Ubuntu ! Venez me voir dans le prochain numéro et nous pourrons continuer ici même, sur le FCM !
Comme toujours, pour les erreurs, envoyez un e-mail à : misc@fullcirclemagazine.org