Vagrant VS Docker

Docker VS Vagrant

Um eine Webanwendung zu erstellen und auszuführen, müssen Sie nur wenige Software- / Tools installieren und konfigurieren. Sie können diese Software und Tools natürlich manuell auf Ihrem Computer (Ihrem eigenen Betriebssystem) installieren. Dies kann jedoch zu Problemen führen! und weist einige Einschränkungen auf, z. B. die Neuinstallation aller Komponenten, wenn Sie den Entwicklungscomputer (Computer, Laptop) wechseln, zwischen Softwareversionen wechseln, denselben Port für zwei verschiedene Software verwenden und die Anwendung für andere Benutzer freigeben, wenn Sie einige spezielle Konfigurationen für das vorgenommen haben Umwelt usw.

Die Lösung für alle genannten Probleme wäre, die Entwicklungsumgebung mit dem Anwendungscode zu versenden! Wenn jemand den Code erhält, kann er die Umgebung booten und alles bereithalten.

Tools wie Vagrant und Docker unterstützen Sie dabei. Beide erstellen virtuelle Umgebungen, mit denen Sie Ihre Anwendungen erstellen und ausführen können. Davon abgesehen erledigt jeder seine Arbeit auf unterschiedliche Weise und jeder hat seine eigenen Vorteile.

Vagrant ist ein Manager für virtuelle Maschinen. Dies bedeutet, dass Sie eine virtuelle Maschine erstellen, bereitstellen und freigeben können. (In diese können Sie SSH einbinden und alles installieren, was Sie zum Starten der Codierung benötigen.)

Eine virtuelle Maschine (wie VirtualBox und VMWare) ist ein virtuelles Betriebssystem, das auf Ihrem nativen Betriebssystem ausgeführt wird. Ja! genau so. Sie virtualisieren im Wesentlichen Ihre Computerhardware für die Betriebssysteme, sodass Sie so viele Betriebssysteme erstellen können, wie Sie benötigen, und alle auf einer gemeinsam genutzten Hardware ausführen können.

Die Ausführung virtueller Maschinen erfordert jedoch eine Menge Ressourcen. Erwarten Sie daher nicht, dass Sie zusätzlich zu Ihren fünf Betriebssystemen ausführen. Es ist nicht sinnvoll, ein virtuelles Betriebssystem in der Produktion auszuführen. Wenn Sie also Technologien für virtuelle Maschinen (wie Vagrant) verwenden, können Sie die Umgebung nur mit anderen Entwicklern und Teammitgliedern teilen, nicht jedoch mit Produktionsservern.

Wahrscheinlich gibt es einen cleveren Trick für die Verwendung virtueller Maschinen in der Produktion. Der Trick besteht darin, dass Sie Ihre virtuelle Maschine mit Konfigurationsverwaltungstools (wie Puppet, Chef und Ansible) versehen und dann dasselbe Tool in der Produktion ausführen können, um Ihre Produktionsumgebung bereitzustellen.

Lassen Sie uns nun darüber sprechen, wie Sie die Einschränkungen der virtuellen Maschinen mithilfe verschiedener Technologien wie Docker umgehen können.

Docker erstellt virtuelle Container. (nicht virtuelle Maschinen). Docker virtualisiert Ihr Betriebssystem für die Software, sodass Sie beliebig viele Software (Container) erstellen und auf einem gemeinsam genutzten Betriebssystem ausführen können.

Docker ist viel flexibler und skalierbarer als virtuelle Maschinen und läuft überall !! (Entwicklung, Produktion, Inszenierung, Q / A, CI).

Ein Container ist nur der Teil des Betriebssystems (Linux fast jeder Distribution), der für die Ausführung einer Software verantwortlich ist (z. B. eine DB-Engine „MySQL“ oder ein Cache-System „Redis“). Bedeutet, es ist nur ein Teil des Betriebssystems! Alle anderen Teile werden von allen Containern geteilt. Dies beschleunigt die Ausführung eines virtuellen Containers um den Faktor 10 gegenüber der Ausführung einer vollständigen virtuellen Maschine.

Docker kann mehrere Container ausführen, und es wird dringend empfohlen, nur eine Software pro Container auszuführen, um die Abhängigkeiten zwischen den Software-Containern zu beseitigen (da jede Software über ein eigenes isoliertes Linux-Betriebssystem verfügt). Wenn Sie also irgendetwas in einem Container vermasseln, ist das keine große Sache! Sie können den Container problemlos neu starten und in den ursprünglichen Zustand zurückkehren, ohne dass andere auf den anderen Containern ausgeführte Software beeinträchtigt wird.

Virtuelle Maschinen bieten eine bessere Isolation auf Kosten eines höheren Overheads, da jede virtuelle Maschine ihren eigenen vollständigen Kernel und eine eigene Betriebssysteminstanz ausführt. Virtuelle Container bieten zwar weniger Isolation, aber weniger Overhead, da bestimmte Teile des Host-Kernels und des Betriebssystems gemeinsam genutzt werden.

Die Verwendung von Tools wie Vagrant und Docker spart Ihnen Zeit bei der Vorbereitung der Umgebung und macht Ihre Umgebung jederzeit und fast überall portabel und reproduzierbar.

Eines der großartigen Dinge an den Ökosystemen Vagrant und Docker ist, dass es bereits viele großartige Vagrant-Boxen und Docker-Bilder gibt, die Sie verwenden können, sodass Sie sie nicht selbst erstellen müssen, was die Dinge noch schneller macht .

Als PHP-Entwickler bevorzuge ich Docker gegenüber Vagrant! weil es viel schneller geht und ich meine Umgebung mit zur Produktion bringen kann.

Was mir an Docker am besten gefällt, ist die Möglichkeit, zwischen Software-Versionen (PHP 5.5, 5.6 und 7.0), Datenbank-Engines (MySQL, PostgreSQL und MariaDB) und Cache-Systemen (Memcached und Redis) umzuschalten, ohne etwas anderes zu beeinflussen (dies ist mit nicht möglich) Landstreicher!).

Wenn Sie ein Laravel-Entwickler wie ich sind, haben Sie großes Glück, denn jetzt können Sie mit LaraDock (einem großartigen Tool zum Ausführen von Laravel on Docker) schnell mit Laravel on Docker loslegen.

Wenn Sie jedoch ein anderes PHP-Framework verwenden, können Sie LaraDock weiterhin verwenden und einige einfache Variablen bearbeiten, damit es mit Ihrem Framework funktioniert.

Danke fürs Lesen. Folge mir auf Twitter, um auf dem Laufenden zu bleiben @Mahmoud_Zalt