Was ist Docker Container? - Containerisieren Sie Ihre Anwendung mit Docker



Docker Container ist eine einfache alternative Lösung zu Virtual Machine zum Erstellen, Bereitstellen und Ausführen von Anwendungen in einem Container.

Nun, ich hoffe, Sie haben meine vorherigen Blogs weiter gelesen Docker wo ich die Grundlagen von Docker behandelt habe. Hier in diesem Docker Container-Blog werde ich darüber diskutieren, was Docker Container sind und wie es funktioniert. Meistens konzentrieren wir uns auf praktische Anwendungen und Anwendungsfälle von Docker.

Ich habe die Themen für diesen Docker Container-Blog aufgelistet:





  • Warum brauchen wir Docker-Container?
  • Wie funktionieren Docker-Container?
  • Anwendungsfälle von Docker Container

Warum brauchen wir Docker-Container?

Ich erinnere mich noch richtig daran, ich habe an einem Projekt gearbeitet. In diesem Projekt folgten wir der Microservice-Architektur. Für diejenigen unter Ihnen, die nicht wissen, was Microservice ist, keine Sorge, ich werde Ihnen eine Einführung geben.

Die Idee hinter Microservices ist, dass bestimmte Arten von Anwendungen einfacher zu erstellen und zu warten sind, wenn sie in kleinere, zusammensetzbare Teile zerlegt werden, die zusammenarbeiten. Jede Komponente wird separat entwickelt, und die Anwendung ist dann einfach die Summe ihrer Bestandteile.



Sortierprogramm in Java zusammenführen

Betrachten Sie das folgende Beispiel:

Online-Shopping-App - Docker Container - Edureka

In der obigen Abbildung gibt es einen Online-Shop mit separaten Microservices für Benutzerkonto, Produktkatalog, Bestellabwicklung und Einkaufswagen.



Nun, diese Architektur hat viele Vorteile:

  • Selbst wenn einer Ihrer Microservices ausfällt, bleibt Ihre gesamte Anwendung weitgehend unberührt.
  • Es ist einfacher zu verwalten

Es gibt noch viele andere Vorteile. Ich werde in diesem Beitrag nicht näher auf Microservices eingehen. Aber bald werde ich auch ein paar Blogs über Microservices erstellen.

In dieser Architektur verwendeten wir CentOS Virtual Machines. Diese virtuellen Maschinen wurden durch Schreiben langer Skripte konfiguriert. Die Konfiguration dieser VMs war nicht das einzige Problem.

Das Entwickeln solcher Anwendungen erfordert das Starten mehrerer Mikrodienste in einer Maschine. Wenn Sie also fünf dieser Dienste starten, benötigen Sie fünf VMs auf diesem Computer. Betrachten Sie das folgende Diagramm:

Das andere Problem ist ziemlich häufig, ich weiß, dass viele von Ihnen sich darauf beziehen können. Die Anwendung funktioniert auf dem Laptop eines Entwicklers, jedoch nicht beim Testen oder Produzieren. Dies kann daran liegen, dass keine konsistente Computerumgebung vorhanden ist. Betrachten Sie das folgende Diagramm:

Abgesehen davon gab es noch viele andere Probleme, aber ich denke, diese Probleme reichen aus, um Ihnen die Notwendigkeit von Docker-Containern zu erklären.

Erfahren Sie, wie Docker-Container besser sind als virtuelle Maschinen

Stellen Sie sich also vor, ich gebe allen meinen VMs 8 GB RAM und habe 5 Microservices, die auf verschiedenen virtuellen Maschinen ausgeführt werden. In diesem Fall benötigen diese VMs 40 GB RAM. Nun, jetzt muss die Konfiguration meines Host-Computers sehr hoch sein. Auf meinem Host-Computer sollten fast 44 GB RAM vorhanden sein. Offensichtlich ist dies keine nachhaltige Lösung für eine solche Architektur, da ich hier viele Ressourcen verschwende.

Gut, ich muss viele Ressourcen verschwenden, aber ich habe immer noch ein Problem mit Inkonsistenzen in meinem Software Delivery Life-Cycle (SDLC). Ich muss diese VMs sowohl im Test als auch in der Produktumgebung konfigurieren. Irgendwo in diesem Prozess wurde einige Software auf dem Testserver nicht aktualisiert, und das Entwicklerteam verwendet die aktualisierte Version der Software. Dies führt zu Konflikten.

Was ist, wenn ich 100 VMs verwende? Die Konfiguration jeder VM nimmt viel Zeit in Anspruch und ist gleichzeitig fehleranfällig.

Lassen Sie uns nun verstehen, was Docker Container ist und wie es funktioniert und wie es mein Problem gelöst hat.

Was ist ein Docker Container?

Docker ist ein Tool, mit dem Anwendungen mithilfe von Containern einfacher erstellt, bereitgestellt und ausgeführt werden können.

Sie können Docker-Container erstellen. Diese Container enthalten in meinem Fall alle Binärdateien und Bibliotheken, die für Ihre Anwendung oder Ihren Microservice erforderlich sind. Ihre Anwendung befindet sich also in einem Container, oder Sie haben Ihre Anwendung containerisiert. Jetzt kann derselbe Container in der Test- und Prod-Umgebung verwendet werden.

Docker-Container sind eine einfache Lösung für virtuelle Maschinen und verwenden das Host-Betriebssystem. Das Beste daran ist, dass Sie dem Docker-Container keinen RAM vorab zuweisen müssen. Er wird bei Bedarf verwendet. Mit Docker Container muss ich mir also keine Sorgen um die Verschwendung von Ressourcen machen.

Lassen Sie uns jetzt verstehen, wie ein Docker-Container funktioniert.

Wie funktioniert ein Docker Container?

Das folgende Diagramm ist im Grunde eine Möglichkeit, Docker zu verwenden. Und ich gehe davon aus, dass Sie eine Idee zu Docker Image und Dockerfile haben.

Leute, ich weiß, dass das Diagramm etwas komplex aussieht, aber glauben Sie mir, es ist nicht so komplex. Nachstehend finden Sie die Erklärung des Diagramms. Auch wenn Sie der Meinung sind, dass es schwer zu verstehen ist, können Sie Ihre Zweifel äußern. Ich werde diese Fragen so schnell wie möglich beantworten.

  • Ein Entwickler schreibt zuerst den Projektcode in eine Docker-Datei und erstellt dann ein Image aus dieser Datei.
  • Dieses Bild enthält den gesamten Projektcode.
  • Jetzt können Sie dieses Docker-Image ausführen, um so viele Container zu erstellen, wie Sie möchten.
  • Dieses Docker-Image kann auf den Docker-Hub hochgeladen werden (es ist im Grunde ein Cloud-Repository für Ihre Docker-Images, Sie können es öffentlich oder privat halten).
  • Dieses Docker-Image auf dem Docker-Hub kann von anderen Teams wie QA oder Prod abgerufen werden.

Dies verhindert nicht nur die Verschwendung von Ressourcen, sondern stellt auch sicher, dass die Computerumgebung, die sich in einem Entwickler-Laptop befindet, auch in anderen Teams repliziert wird. Ich habe jetzt das Gefühl, ich muss Ihnen nicht sagen, warum wir Docker brauchen.

Dies war eine Möglichkeit, es zu verwenden. Ich vermute, ihr müsst neugierig sein, wie ich Docker verwendet habe, um mein Problem mit Microservices zu lösen. Lassen Sie mich Ihnen einen Überblick darüber geben.

Unten ist die Erklärung des Diagramms:

  • Zunächst haben wir die komplexen Anforderungen in eine Docker-Datei geschrieben.
  • Dann haben wir es auf GitHub geschoben.
  • Danach haben wir einen CI-Server (Jenkins) verwendet.
  • Dieser Jenkins-Server wird es von Git herunterziehen und die genaue Umgebung erstellen. Dies wird sowohl in Produktionsservern als auch in Testservern verwendet.
  • Wir haben es für Staging-Umgebungen bereitgestellt (es bezieht sich auf die Bereitstellung Ihrer Software auf Servern zu Testzwecken, bevor diese vollständig in der Produktion bereitgestellt werden.) Umgebungen für Tester.
  • Grundsätzlich haben wir genau das, was wir in Entwicklung, Test und Inszenierung hatten, in die Produktion übernommen.

Es wird eigentlich fair sein zu sagen, dass Docker mir das Leben leicht gemacht hat.

Nun, das war die Geschichte meines Unternehmens. Schauen wir uns die Fallstudie der Indiana University an. Wie Docker ihre Probleme löste.

Fallstudie der Indiana University:

Die Indiana University ist ein öffentliches Universitätssystem mit mehreren Campus im US-Bundesstaat Indiana.

Problemstellung

Sie verwendeten benutzerdefinierte Skripts, um die Anwendungen in der VM bereitzustellen.

Ihre Umgebung wurde für ihre alten Java-basierten Anwendungen optimiert. Ihr wachsendes Umfeld umfasst neue Produkte, die nicht ausschließlich auf Java basieren. Um ihren Studenten die bestmögliche Erfahrung zu bieten, musste die Universität mit der Modernisierung der Anwendungen beginnen.

Die Universität wollte die Art und Weise, wie sie Anwendungen entwerfen, verbessern, indem sie für ihre Anwendungen auf eine Microservices-basierte Architektur umstellte.

Sicherheit war für Schülerdaten wie SSNs und Schülergesundheitsdaten erforderlich.

Lösung:

Alle Probleme wurden vom Docker Data Center (DDC) behoben. Beachten Sie das folgende Diagramm:

Docker Trusted Registry - Es speichert die Docker-Bilder.

UCP-Web-Benutzeroberfläche (Universal Control Plane) - Hilft bei der Verwaltung des gesamten Clusters von einem einzigen Ort aus. Dienste werden mithilfe der UCP-Webbenutzeroberfläche mithilfe von Docker-Images bereitgestellt, die in DTR (Docker Trusted Registry) gespeichert sind.

IT-Einsatzteams nutzen Universal Control Plane, um von Docker installierte Software auf Hosts bereitzustellen und dann ihre Anwendungen bereitzustellen, ohne eine Reihe manueller Schritte ausführen zu müssen, um die gesamte Infrastruktur einzurichten.

UCP und DTR lassen sich in ihren LDAP-Server integrieren, um schnell Zugriff auf ihre Anwendungen zu gewähren.

Ich hoffe, ihr habt die vorherigen Blogs gelesen, um die Grundlagen von Docker zu lernen.

Jetzt werde ich Ihnen erklären, wie wir Docker Compose für Anwendungen mit mehreren Containern verwenden können.

Docker Hands-On:

Ich gehe davon aus, dass Sie Docker installiert haben.Ich werde Docker Compose in diesem Beitrag verwenden. Im Folgenden habe ich eine kleine Einführung in Docker Compose gegeben.

Docker Compose: Es ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. Mit Docker Compose können Sie eine Compose-Datei verwenden, um die Dienste Ihrer Anwendung zu konfigurieren. Anschließend können Sie mit einem einzigen Befehl alle Dienste in Ihrer Konfiguration erstellen und starten.

Angenommen, Sie haben mehrere Anwendungen in verschiedenen Containern und alle diese Container sind miteinander verknüpft. Sie möchten also nicht jeden dieser Container einzeln ausführen. Sie möchten diese Container jedoch mit einem einzigen Befehl ausführen. Hier kommt Docker Compose ins Spiel. Damit können Sie mit einem einzigen Befehl mehrere Anwendungen in verschiedenen Containern ausführen. d.h. Docker-Compose.

Beispiel: Stellen Sie sich vor, Sie haben verschiedene Container in einer YAML-Datei, von denen einer eine Web-App, ein anderer ein Postgres und ein anderer Redis ausführt. Das nennt man Docker Compose File. Von dort aus können Sie diese Container mit einem einzigen Befehl ausführen.

Nehmen wir noch ein Beispiel:

Angenommen, Sie möchten ein Blog veröffentlichen, dafür verwenden Sie CMS (Content Management System), und WordPress ist das am häufigsten verwendete CMS. Grundsätzlich benötigen Sie einen Container für WordPress und einen weiteren Container als MySQL für das Backend. Dieser MySQL-Container sollte mit dem WordPress-Container verknüpft sein. Wir benötigen außerdem einen weiteren Container für Php Myadmin, der mit der MySQL-Datenbank verknüpft wird. Grundsätzlich wird er für den Zugriff auf die MySQL-Datenbank verwendet.

Wie wäre es, wenn ich das oben genannte Beispiel praktisch ausführe?

Schritte:

  1. Installieren Sie Docker Compose ::
  2. Installieren Sie WordPress:: Wir werden den Beamten verwenden WordPress und MariaDB Docker-Bilder.
  3. Installieren Sie MariaDB: Es ist einer der beliebtesten Datenbankserver der Welt. Es wurde von den ursprünglichen Entwicklern von MySQL erstellt. MariaDB wurde als Open-Source-Software entwickelt und bietet als relationale Datenbank eine SQL-Schnittstelle für den Zugriff auf Daten.
  4. Installieren Sie PhpMyAdmin:: Es ist ein kostenloses Software-Tool, das in PHP geschrieben wurde und die Verwaltung von MySQL über das Web übernimmt.
  5. Erstellen Sie die WordPress-Site:

Lass uns anfangen!

Installieren Sie Docker Compose:

Installieren Sie zuerst Python Pip:

sudo apt-get installiere python-pip

Jetzt können Sie Docker Compose installieren:

sudo pip installiere Docker-Compose

Installieren Sie WordPress:

Erstellen Sie ein WordPress-Verzeichnis:

mkdir WordPress

Geben Sie dieses WordPress-Verzeichnis ein:

cd wordpress /

Erstellen Sie in diesem Verzeichnis eine Docker Compose YAML-Datei und bearbeiten Sie sie mit gedit:

sudo gedit docker-compose.yml

Fügen Sie die folgenden Codezeilen in diese yaml-Datei ein:

wordpress: image: wordpress links: - wordpress_db: mysql ports: - 8080: 80 wordpress_db: image: mariadb umgebung: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 umgebung: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Ich weiß, dass Sie möchten, dass ich diesen Code erkläre. Was ich also tun werde, werde ich kleine Abschnitte dieses Codes nehmen und Ihnen erklären, was passiert.

wordpress_db: ... Umgebung: MYSQL_ROOT_PASSWORD: edureka ...

Dadurch wird eine Umgebungsvariable im Container wordpress_db mit dem Namen MYSQL_ROOT_PASSWORD mit Ihrem gewünschten Kennwort festgelegt. Das MariaDB Docker-Image ist so konfiguriert, dass es beim Start nach dieser Umgebungsvariablen sucht und die Datenbank mit einem Root-Konto mit dem als MYSQL_ROOT_PASSWORD definierten Kennwort einrichtet.

WordPress: ... Ports: - 8080: 80 ...

Die erste Portnummer ist die Portnummer auf dem Host, und die zweite Portnummer ist der Port im Container. Diese Konfiguration leitet Anforderungen an Port 8080 des Hosts an den Standard-Webserver-Port 80 im Container weiter.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 umgebung: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Dies greift docker-phpmyadmin vom Community-Mitglied corbinu ab, verknüpft es mit unserem wordpress_db-Container mit dem Namen mysql (dh innerhalb des phpmyadmin-Containers werden Verweise auf den Hostnamen mysql an unseren wordpress_db-Container weitergeleitet) und legt seinen Port 80 an Port 8181 des offen Host-System und legt schließlich einige Umgebungsvariablen mit unserem MariaDB-Benutzernamen und -Kennwort fest. In diesem Image wird die Umgebungsvariable MYSQL_ROOT_PASSWORD nicht automatisch aus der Umgebung von wordpress_dbcontainer abgerufen, wie dies im WordPress-Image der Fall ist. Wir müssen tatsächlich die Zeile MYSQL_ROOT_PASSWORD: edureka aus dem Container wordpress_db kopieren und den Benutzernamen auf root setzen.

Starten Sie nun die Anwendungsgruppe:

Docker-Compose -d

Das ist alles was Sie tun müssen. Sie können auf diese Weise beliebig viele Container hinzufügen und alle nach Belieben verknüpfen.

Gehen Sie nun im Browser mit Ihrer öffentlichen IP-Adresse oder Ihrem Hostnamen zu Port 8080, wie unten gezeigt:

localhost: 8080

Füllen Sie dieses Formular aus und klicken Sie auf WordPress installieren.

Besuchen Sie nach Abschluss des Vorgangs erneut die IP-Adresse Ihres Servers (diesmal über Port 8181, z. B. localhost: 8181). Sie werden vom Anmeldebildschirm von phpMyAdmin begrüßt:

Melden Sie sich mit dem Benutzernamen root und dem Kennwort an, die Sie in der YAML-Datei festgelegt haben, und Sie können Ihre Datenbank durchsuchen. Sie werden feststellen, dass der Server eine WordPress-Datenbank enthält, die alle Daten aus Ihrer WordPress-Installation enthält.

Hier beende ich meinen Docker Container Blog. Ich hoffe dir hat dieser Beitrag gefallen. Du kannst nachschauen andere Blogs auch in der Serie, die sich mit den Grundlagen von Docker befasst.

Wenn Sie diesen Docker Container-Blog für relevant befunden haben, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Edureka DevOps Certification Training-Kurs hilft den Lernenden, Kenntnisse in verschiedenen DevOps-Prozessen und -Tools wie Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack und GIT für die Automatisierung mehrerer Schritte in SDLC zu erwerben.

Hast du eine Frage an mich? Bitte erwähnen Sie es in den Kommentaren und ich werde mich bei Ihnen melden.