Si vous jetez un oeil aux fonctionnalités de Docker, la plupart d'entre elles sont déjà fournies par LXC.
Alors qu'est-ce que Docker ajoute? Pourquoi devrais-je utiliser Docker sur LXC ordinaire?
Si vous jetez un oeil aux fonctionnalités de Docker, la plupart d'entre elles sont déjà fournies par LXC.
Alors qu'est-ce que Docker ajoute? Pourquoi devrais-je utiliser Docker sur LXC ordinaire?
À partir du menu fixe FAQ:
Docker n'est pas un remplacement pour un conteneur lxc. "lxc" fait référence aux fonctionnalités du noyau linux (plus précisément les espaces de noms et les groupes de contrôle) qui permettent de sandboxing processus à partir de l'un de l'autre, et le contrôle de leurs allocations de ressources.
Sur le dessus de ce faible niveau de fondation des fonctionnalités du noyau, Docker propose un outil de haut niveau avec plusieurs puissant fonctionnalités:
Portable de déploiement sur des machines. Docker définit un format pour le regroupement d'une application et toutes ses dépendances dans un objet unique qui peut être transféré à tout docker-activé la machine, et exécutés avec la garantie que l'environnement d'exécution exposée à l'application va être le même. Lxc met en œuvre le processus de "bac à sable", qui est un pré-requis pour la portable de déploiement, mais cela n'est pas suffisant pour portable de déploiement. Si vous m'avez envoyé une copie de votre application installée sur un custom lxc configuration, il serait presque certainement pas s'exécuter sur la machine de la façon dont il fonctionne sur le vôtre, parce qu'il est lié à votre machine de configuration spécifiques: la mise en réseau, le stockage, l'enregistrement, distribution, etc. Docker définit une abstraction pour ces paramètres spécifiques à la machine, de sorte que l'exacte même conteneur docker pouvez exécuter inchangé sur de nombreuses machines différentes, avec de nombreuses configurations différentes.
Centrée sur les applications. Docker est optimisé pour le déploiement des applications, plutôt que des machines. Cela se reflète dans son API, interface utilisateur, conception de la philosophie et de la documentation. En revanche, la lxc scripts d'assistance se concentrer sur les conteneurs légers de machines - essentiellement des serveurs de démarrage plus rapide et ont besoin de moins de mémoire vive. Nous pensons qu'il ya plus de conteneurs que cela.
Construction automatique. Le panneau comprend un outil pour les développeurs d'assembler automatiquement un conteneur à partir de leur code source, avec un contrôle total sur les dépendances de l'application, outils de construction, emballage, etc. Ils sont libres de le faire, maven, chef, puppet, le sel, les paquets debian, rpm, source d'archives, ou de toute combinaison de ce qui précède, quelle que soit la configuration des machines.
Gestion des versions. Le panneau comprend git-comme les capacités pour le suivi des versions successives d'un conteneur, en inspectant la diff entre les versions, de commettre de nouvelles versions, la restauration etc. L'histoire comprend aussi comment un conteneur a été assemblés, et par qui, ainsi, vous obtenez une traçabilité complète de la production de serveur, le chemin du retour pour le développeur amont. Docker met également en œuvre des différentiels téléchargements, similaire à "git pull", de sorte que les nouvelles versions d'un conteneur peut être transféré que par l'envoi de diff.
De réutilisation des composants. Un conteneur peut être utilisé comme une "image de base" pour créer plus de composants spécialisés. Cela peut être fait manuellement ou en tant que partie d'un système automatisé de construire. Par exemple, vous pouvez préparer l'idéal python environnement, et de l'utiliser comme une base pour les 10 applications différentes. Votre idéal d'installation de postgresql peut être ré-utilisé pour tous vos projets futurs. Et ainsi de suite.
De partage. Docker a accès à un registre public (http://index.docker.io), où des milliers de personnes ont téléchargé utile conteneurs: rien de redis, couchdb, postgres pour irc videurs à l'application rails serveurs de hadoop à des images de base pour les différentes distributions. Le registre comprend également un fonctionnaire "bibliothèque standard" de l'utile conteneurs maintenu par le support de l'équipe. Le registre lui-même est open-source, donc n'importe qui peut déployer leur propre registre pour stocker et transférer des récipients privés, à des fins internes déploiements de serveur par exemple.
Outil de l'écosystème. Docker définit une API d'automatisation et de personnalisation de la création et de déploiement de conteneurs. Il y a un grand nombre d'outils de l'intégration avec menu fixe pour étendre ses fonctionnalités. PaaS-comme le déploiement (Dokku, Deis, Flynn), multi-nœud orchestration (maestro, le sel, mesos, openstack nova), gestion des tableaux de bord (menu fixe-ui, openstack horizon, chantier naval), la gestion de la configuration (chef, puppet), intégration continue (jenkins, strider, travis), etc. Docker est rapidement en train de devenir la norme pour les conteneurs en fonction de l'outillage.
J'espère que cela aide!
Prenons un oeil à la liste de menu fixe les caractéristiques techniques, et de vérifier quels sont ceux qui sont fournis par LXC et ceux qui ne le sont pas.
1) système de fichiers de l'isolement: chaque processus s'exécute dans un conteneur complètement séparée de la racine du système de fichiers.
Fourni avec la plaine LXC.
2) des Ressources de l'isolement: système de ressources comme le cpu et la mémoire peuvent être répartis différemment pour chaque réservoir, à l'aide de cgroups.
Fourni avec la plaine LXC.
3) l'isolation du Réseau: chaque processus conteneur s'exécute dans son propre espace de noms réseau, avec une interface virtuelle et l'adresse IP qui lui est propre.
Fourni avec la plaine LXC.
4) Copie sur écriture: racine systèmes de fichiers sont créés à l'aide de copy-on-write, ce qui rend le déploiement extrêmement rapide, la mémoire à bas prix et de disque à bas prix.
Ceci est fourni par AUFS, un système de fichiers union que Docker dépend. Vous pourriez mettre en place AUFS vous-même manuellement avec LXC, mais Docker utilise comme un standard.
5) la Journalisation: les flux standard (stdout/stderr/stdin) de chaque processus de conteneur sont collectées et enregistrées en temps réel ou par lots de récupération.
Le panneau fournit cette.
6) la gestion du Changement: les changements à un conteneur de système de fichiers peut être engagé dans une nouvelle image, et ré-utilisé pour créer plus de conteneurs. Pas de template ou manuel de configuration requis.
"Création de modèles ou de configuration manuelle" est une référence à LXC, où vous auriez besoin d'apprendre au sujet de ces deux choses. Docker permet de traiter les conteneurs dans la façon dont vous avez l'habitude de traiter des machines virtuelles, sans apprentissage sur LXC configuration.
7) shell Interactif: docker peut allouer un pseudo-tty et le joindre à l'entrée standard d'un conteneur, par exemple pour exécuter un jetable shell interactif.
LXC offre déjà à cette.
J'ai tout juste commencé à apprendre à propos d'un conteneur LXC et Docker, alors je serais le bienvenue des corrections ou des réponses de meilleure qualité.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.