En d'autres termes:
LXD fonctionne avec LXC et n'est pas conçu pour remplacer ou supplanter LXC. Son objectif est de faciliter l'utilisation des conteneurs basés sur LXC via l'ajout d'un démon dorsal prenant en charge une API REST et d'un client CLI simple qui fonctionne à la fois avec les démons locaux et distants via le REST API.
LXD est plus comme hôte docker.
LXD
est basé sur liblxc
, son objectif est de contrôler certaines lxc
avec des fonctionnalités supplémentaires, telles que des instantanés ou une migration en direct. LXD
est lié à LXC
et ils sont centrés sur le système d'exploitation.
Docker
est beaucoup plus centré sur les applications, basé au début sur LXC
mais maintenant indépendant de LXC
, il peut utiliser openvz
ou autre. Docker
se concentre uniquement sur les applications avec lib et dépendance, pas sur le système d'exploitation.
regardez ceci pour plus: https://www.flockport.com/lxc-vs-lxd-vs-docker-making-sense-of-the-rap-ly-evolving-container-ecosystem/
Cordialement.
Comment lxd fournit-il une fonctionnalité complète du système d'exploitation dans des conteneurs, pas seulement des processus uniques?
Les conteneurs sont des systèmes Linux isolés utilisant les fonctionnalités cgroups pour limiter cpu/mémoire/réseau/etc. dans le noyau Linux, sans qu'il soit nécessaire de démarrer une machine virtuelle complète.
LXD utilise les fonctionnalités fournies par liblxc (basé sur LXC), d'où viennent les fonctionnalités pour une fonctionnalité complète du système d'exploitation.
En quoi est-il différent de lxc/docker + wrappers?
LXD utilise liblxc de LXC. Docker est davantage axé sur les applications, seul le processus principal de votre application dans le conteneur (en utilisant libcontainer maintenant par défaut, Docker a d'abord utilisé liblxc pour cela)
Est-il similaire à un conteneur lancé avec le script docker + supervisor/wrapper Pour contenir plusieurs processus dans un conteneur?
Quelque chose de similaire. La différence entre LXD et Docker est que Docker est un conteneur d'application, LXD est un conteneur système. LXD utilise upstart/systemd comme processus principal à l’intérieur du conteneur et est par défaut prêt à être un environnement complet VM avec une utilisation très faible de la mémoire/du processeur. Oui, vous pouvez construire votre menu fixe avec supervisorctl/runit, mais vous devez exécuter manuellement ce processus. Vous pouvez vérifier comment cela se fait dans http://phusion.github.io/baseimage-docker/ qui fait quelque chose de similaire dans un conteneur.
Que puis-je faire avec LXD que je ne peux pas faire avec certains wrappers sur LXC et docker?
migrations en direct des conteneurs, utilisez vos conteneurs comme des machines virtuelles complètes, configuration précise pour les cœurs de processeur/mémoire/E/S réseau à utiliser dans votre conteneur, exécutez votre processus de conteneur en mode sans privilège (processus racine dans votre conteneur! = processus racine dans votre hôte) par défaut, Docker fonctionne en mode privilégié. Seulement maintenant, dans Docker 1.10, ils implémentent le mode sans privilège, mais vous devez revoir (et peut-être réécrire) vos fichiers Docker car beaucoup de choses ne fonctionneront pas en mode sans privilège.
LXD et Docker sont deux choses différentes. LXD vous donne un "système d'exploitation complet" dans un conteneur et vous pouvez utiliser n'importe quel outil de déploiement qui fonctionne dans un VM pour le déploiement d'applications dans LXD. Avec Docker, votre application se trouve dans le conteneur et vous avez besoin de différents outils pour déployer des applications dans Docker et effectuez des métriques pour améliorer les performances.
Pourquoi est-il disponible uniquement dans Ubuntu s’ils utilisent les fonctionnalités principales du noyau (namespaces et cgroup)?
Si nécessaire, LXD dispose d’une assistance commerciale de Canonical, mais vous pouvez construire LXD dans Centos 7, ArchLinux (avec le noyau corrigé), vérifiez https://github.com/lxc/lxd . Gentoo supporte maintenant LXD https://wiki.gentoo.org/wiki/LXD .