Files
docker-configs/linkwarden/data/archives/6/94_readability.json

1 line
15 KiB
JSON
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"title":"","byline":null,"dir":null,"lang":null,"content":"<div id=\"readability-page-1\" class=\"page\"><section><h2 id=\"introduction\">Introduction</h2><p>Jai trouvé plusieurs tutos pour installer Docker (engine) <strong>à lintérieur</strong> dun container LXC sous Proxmox VE pour ensuite lancer des containers Docker dedans. Le souci cest que vous devez vous logger <strong>dans</strong> le container LXC avant de pouvoir interagir avec vos containers Docker.</p><p>On peut aussi installer Docker directement sur Proxmox VE mais ce nest pas trop conseillé et on na pas la facilité dusage de LXC avec la GUI de Proxmox.</p><p>Et en fait, il se trouve quon peut lancer des images Docker <strong>comme lOS</strong> dun container LXC et ainsi avoir des Docker pilotés par Proxmox. On aura donc pas un comportement 100% identique à si vous aviez fait un <code>docker run</code> sur votre machine.</p><p>Cependant, on gagnera un échange un container totalement identique à vos autres containers LXC de votre cluster (avec toutes les fonctions associées) mais lancé avec une image Docker.</p><p>Mais dabord je vous propose de revenir un peu en arrière avant de vous montrer comment…</p><h2 id=\"contexte\">Contexte</h2><p>Vous le savez, je fais du Proxmox VE depuis un moment. Proxmox VE est une super distribution clé en main et production ready de virtualisation de serveurs (cest même de lhyperconvergé si on active la partie Ceph).</p><p>Il y a plein de petites choses que jaime avec Proxmox VE, et lune delle est quon peut créer des containers Linux avec LXC plutôt que des machines virtuelles QEMU. <a href=\"https://blog.zwindler.fr/2022/10/22/proxmox-tips-tricks/\">Javais fait un article pour en parler</a>.</p><p>A lusage (sauf paramétrage kernel spécifique) le container LXC se comporte de manière strictement identique à une VM dans Proxmox, mais pour une fraction des ressources ! On a un OS, on installe des applications dessus, comme une VM.</p><p><img loading=\"lazy\" src=\"https://blog.zwindler.fr/2022/11/nginx.png\"></p><blockquote><p>Un frontal nginx pour plusieurs applications. Le container LXC complet ne consomme que quelques Mo</p></blockquote><p>Certes cest beaucoup moins bien isolé quune vraie VM (car cest un container, on est isolé des autres processus, mais on tourne sur le kernel de lhyperviseur directement).</p><p>Mais avec si peu de besoins en ressources, je peux héberger de nombreuses petites applications dans des contextes différents avec de très petites machines physiques (des Atom 4Go de RAM à 6€ par mois chez OneProviders) ce qui serait impossible avec une vraie VM.</p><h2 id=\"cest-bien-mais-pas-suffisant\">Cest bien, mais pas suffisant</h2><p>Cependant, LXC nest pas la techno de containerisation la plus connue/hype. Depuis des années sur le forum, à chaque fois que des gens demande le support de Docker dans Proxmox VE, on les envoie balader. Pas toujours très gentiment dailleurs…</p><p>Pourtant, il y a plusieurs raisons pour avoir envie de lancer des containers Docker sur son infra Proxmox :</p><ul><li>Dabord, Docker nest pas autant des workloads stateless et/ou éphémères quon le croit. Beaucoup dapplications containerisées auraient toute leur place sur un cluster de virtualisation.</li><li>Ensuite parce que beaucoup déditeurs de logiciels sont devenus faignants. Certains ne gèrent plus les processus dinstallation (ou alors juste sur un OS) et fournissent juste une image Docker quils maintiennent mise à jour.</li></ul><p>On doit donc se contenter de VMs dans Proxmox pour lancer des containers Docker (cf mon point du début).</p><h2 id=\"lxc-supporte-les-images-oci\">LXC supporte les images OCI</h2><p>Coup de théâtre. Il y a quelques jours, jai découvert que LXC, le moteur de containerisation de Proxmox VE, était compatible avec le format OCI.</p><ul><li><a rel=\"noopener\" href=\"https://www.buzzwrd.me/index.php/2021/03/10/creating-lxc-containers-from-docker-and-oci-images/\">buzzwrd.me - Creating LXC containers from docker and OCI images</a></li></ul><p>Pour ceux qui ne connaissent pas OCI, il sagit dune organisation visant à créer un standard pour unifie la façon de stocker les containers.</p><blockquote><p>The Open Container Initiative is an open governance structure for the express purpose of creating open industry standards around container formats and runtimes.\n<a rel=\"noopener\" href=\"https://opencontainers.org/\">opencontainers.org/</a></p></blockquote><p>Et Docker respecte ce format : on peut donc théoriquement lancer depuis LXC des containers dont limage de base est une image Docker.</p><blockquote><p>Je suis profondément choqué\n(Réf “Jean François Coppé” pour ceux qui nont pas le mème)</p></blockquote><h2 id=\"bon-quand-est-ce-quon-commence-\">Bon, quand est-ce quon commence ?</h2><p>Disclaimer: ce qui suit est de la bidouille. Rien nest supporté et je ne le conseille pas en production. Il est probable quil y ait aussi des limitations (notamment pour ce qui est stockage).</p><p>Dabord, il manque quelques dépendances pour que la fonction OCI de LXC soit utilisable sous Proxmox VE :</p><pre tabindex=\"0\"><code>sudo apt install skopeo umoci jq\n</code></pre><p>Ensuite, par défaut, les containers LXC sattachent à un bridge linux qui sappelle <code>lxcbr0</code>. Cependant ce bridge nexiste probablement pas sur votre installation de Proxmox VE (pas installé par défaut).</p><p>En <em>quick and dirty</em>, on peut juste remplacer le nom par défaut, même si idéalement il faudrait trouver le flag dans la CLI pour changer le bridge. En fonction de comment vous avez configuré le réseau dans votre serveur Proxmox VE, vous allez probablement utiliser <code>vmbr0</code> ou <code>vmbr1</code> :</p><pre tabindex=\"0\"><code>sed -i 's/lxcbr0/vmbr1/g' /etc/lxc/default.conf\n</code></pre><p>Maintenant quon a tout, on peut lancer nos containers LXC à partir dimages docker. Ici je lance limage officielle <code>alpine:latest</code>, mais jaurais pu prendre nimporte quelle autre :</p><pre tabindex=\"0\"><code>lxc-create 500 -t oci -- --url docker://alpine:latest\n</code></pre><p>Jai créé un container appelé “500” (car les VMs et les containers LXC dans proxmox VE sont appelés avec des nombres). Limage est téléchargée puis le container créé :</p><p><img loading=\"lazy\" src=\"https://blog.zwindler.fr/2022/11/lxc_docker_pull.png\"></p><p>On peut maintenant le démarrer (avec <code>lxc-execute</code> on lance le container et ouvrir un prompt directement dedans, mais on a aussi <code>lxc-start</code> et <code>lxc-attach</code>)</p><pre tabindex=\"0\"><code>lxc-execute 500\n</code></pre><p><img loading=\"lazy\" src=\"https://blog.zwindler.fr/2022/11/alpine.png\"></p><p>Tel quel, Proxmox VE ne sait pas que notre container existe et il napparaitra pas dans lUI. Mais ça fonctionne ;-).</p><h2 id=\"bonus\">Bonus</h2><p>On peut même tricher et faire croire à Proxmox que cest un container LXC quil a créé lui-même en créant un fichier <code>500.conf</code>, dans le dossier <code>/etc/pve/lxc/</code></p><p>Les seules lignes obligatoires sont les suivantes :</p><ul><li>arch (amd64 sauf si vous êtes sur ARM)</li><li>cores (la limite de CPUs à imposer au container)</li><li>hostname</li><li>memory (la limite de RAM à imposer au container)</li><li>ostype</li><li>rootfs</li></ul><p><img loading=\"lazy\" src=\"https://blog.zwindler.fr/2022/11/lxc_config.png\"></p><p>Une fois le fichier créé, automatiquement le container apparait dans la liste des VMs de lhôte. On peut le démarrer et ça fonctionne :)</p><p><img loading=\"lazy\" src=\"https://blog.zwindler.fr/2022/11/docker_lxc_running.png\"></p><p>Le container pourra être démarré, arrêté, etc. Le tout depuis la GUI de Proxmox VE :)</p><p>Have fun!</p><h2 id=\"source\">Source</h2><ul><li><a rel=\"noopener\" href=\"https://pve.proxmox.com/wiki/Linux_Container\">Proxmox VE - Linux Container</a></li><li><a rel=\"noopener\" href=\"https://thehomelab.wiki/books/promox-ve/page/setup-and-install-docker-in-a-promox-7-lxc-conainer\">Setup and Install Docker in a Promox 7 LXC Conainer</a></li><li><a rel=\"noopener\" href=\"https://www.buzzwrd.me/index.php/2021/03/10/creating-lxc-containers-from-docker-and-oci-images/\">buzzwrd.me - Creating LXC containers from docker and OCI images</a></li></ul></section></div>","textContent":"IntroductionJai trouvé plusieurs tutos pour installer Docker (engine) à lintérieur dun container LXC sous Proxmox VE pour ensuite lancer des containers Docker dedans. Le souci cest que vous devez vous logger dans le container LXC avant de pouvoir interagir avec vos containers Docker.On peut aussi installer Docker directement sur Proxmox VE mais ce nest pas trop conseillé et on na pas la facilité dusage de LXC avec la GUI de Proxmox.Et en fait, il se trouve quon peut lancer des images Docker comme lOS dun container LXC et ainsi avoir des Docker pilotés par Proxmox. On aura donc pas un comportement 100% identique à si vous aviez fait un docker run sur votre machine.Cependant, on gagnera un échange un container totalement identique à vos autres containers LXC de votre cluster (avec toutes les fonctions associées) mais lancé avec une image Docker.Mais dabord je vous propose de revenir un peu en arrière avant de vous montrer comment…ContexteVous le savez, je fais du Proxmox VE depuis un moment. Proxmox VE est une super distribution clé en main et production ready de virtualisation de serveurs (cest même de lhyperconvergé si on active la partie Ceph).Il y a plein de petites choses que jaime avec Proxmox VE, et lune delle est quon peut créer des containers Linux avec LXC plutôt que des machines virtuelles QEMU. Javais fait un article pour en parler.A lusage (sauf paramétrage kernel spécifique) le container LXC se comporte de manière strictement identique à une VM dans Proxmox, mais pour une fraction des ressources ! On a un OS, on installe des applications dessus, comme une VM.Un frontal nginx pour plusieurs applications. Le container LXC complet ne consomme que quelques MoCertes cest beaucoup moins bien isolé quune vraie VM (car cest un container, on est isolé des autres processus, mais on tourne sur le kernel de lhyperviseur directement).Mais avec si peu de besoins en ressources, je peux héberger de nombreuses petites applications dans des contextes différents avec de très petites machines physiques (des Atom 4Go de RAM à 6€ par mois chez OneProviders) ce qui serait impossible avec une vraie VM.Cest bien, mais pas suffisantCependant, LXC nest pas la techno de containerisation la plus connue/hype. Depuis des années sur le forum, à chaque fois que des gens demande le support de Docker dans Proxmox VE, on les envoie balader. Pas toujours très gentiment dailleurs…Pourtant, il y a plusieurs raisons pour avoir envie de lancer des containers Docker sur son infra Proxmox :Dabord, Docker nest pas autant des workloads stateless et/ou éphémères quon le croit. Beaucoup dapplications containerisées auraient toute leur place sur un cluster de virtualisation.Ensuite parce que beaucoup déditeurs de logiciels sont devenus faignants. Certains ne gèrent plus les processus dinstallation (ou alors juste sur un OS) et fournissent juste une image Docker quils maintiennent mise à jour.On doit donc se contenter de VMs dans Proxmox pour lancer des containers Docker (cf mon point du début).LXC supporte les images OCICoup de théâtre. Il y a quelques jours, jai découvert que LXC, le moteur de containerisation de Proxmox VE, était compatible avec le format OCI.buzzwrd.me - Creating LXC containers from docker and OCI imagesPour ceux qui ne connaissent pas OCI, il sagit dune organisation visant à créer un standard pour unifie la façon de stocker les containers.The Open Container Initiative is an open governance structure for the express purpose of creating open industry standards around container formats and runtimes.\nopencontainers.org/Et Docker respecte ce format : on peut donc théoriquement lancer depuis LXC des containers dont limage de base est une image Docker.Je suis profondément choqué\n(Réf “Jean François Coppé” pour ceux qui nont pas le mème)Bon, quand est-ce quon commence ?Disclaimer: ce qui suit est de la bidouille. Rien nest supporté et je ne le conseille pas en production. Il est probable quil y ait aussi des limitations (notamment pour ce qui est stockage).Dabord, il manque quelques dépendances pour que la fonction OCI de LXC soit utilisable sous Proxmox VE :sudo apt install skopeo umoci jq\nEnsuite, par défaut, les containers LXC sattachent à un bridge linux qui sappelle lxcbr0. Cependant ce bridge nexiste probablement pas sur votre installation de Proxmox VE (pas installé par défaut).En quick and dirty, on peut juste remplacer le nom par défaut, même si idéalement il faudrait trouver le flag dans la CLI pour changer le bridge. En fonction de comment vous avez configuré le réseau dans votre serveur Proxmox VE, vous allez probablement utiliser vmbr0 ou vmbr1 :sed -i 's/lxcbr0/vmbr1/g' /etc/lxc/default.conf\nMaintenant quon a tout, on peut lancer nos containers LXC à partir dimages docker. Ici je lance limage officielle alpine:latest, mais jaurais pu prendre nimporte quelle autre :lxc-create 500 -t oci -- --url docker://alpine:latest\nJai créé un container appelé “500” (car les VMs et les containers LXC dans proxmox VE sont appelés avec des nombres). Limage est téléchargée puis le container créé :On peut maintenant le démarrer (avec lxc-execute on lance le container et ouvrir un prompt directement dedans, mais on a aussi lxc-start et lxc-attach)lxc-execute 500\nTel quel, Proxmox VE ne sait pas que notre container existe et il napparaitra pas dans lUI. Mais ça fonctionne ;-).BonusOn peut même tricher et faire croire à Proxmox que cest un container LXC quil a créé lui-même en créant un fichier 500.conf, dans le dossier /etc/pve/lxc/Les seules lignes obligatoires sont les suivantes :arch (amd64 sauf si vous êtes sur ARM)cores (la limite de CPUs à imposer au container)hostnamememory (la limite de RAM à imposer au container)ostyperootfsUne fois le fichier créé, automatiquement le container apparait dans la liste des VMs de lhôte. On peut le démarrer et ça fonctionne :)Le container pourra être démarré, arrêté, etc. Le tout depuis la GUI de Proxmox VE :)Have fun!SourceProxmox VE - Linux ContainerSetup and Install Docker in a Promox 7 LXC Conainerbuzzwrd.me - Creating LXC containers from docker and OCI images","length":6145,"excerpt":"Jai trouvé plusieurs tutos pour installer Docker (engine) à lintérieur dun container LXC sous Proxmox VE pour ensuite lancer des containers Docker dedans. Le souci cest que vous devez vous logger dans le container LXC avant de pouvoir interagir avec vos containers Docker.","siteName":null}