web-dev-qa-db-fra.com

En quoi "lxd" est-il différent de lxc/docker?

Des questions

  • Comment lxd fournit-il une fonctionnalité complète du système d'exploitation dans des conteneurs, pas seulement des processus uniques?
  • En quoi est-il différent de lxc/docker + wrappers?
  • Est-ce similaire à un conteneur lancé avec le script docker + supervisor/wrapper qui contient plusieurs processus dans un conteneur?

En d'autres termes:

  • Que puis-je faire avec LXD que je ne peux pas faire avec certains wrappers sur LXC et docker?
  • Pourquoi est-il disponible uniquement dans Ubuntu s’ils utilisent les fonctionnalités principales du noyau (namespaces et cgroup)?
14
resultsway

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.

2
resultsway

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.

10
dominix

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 .

9
Yonsy Solis