Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Docker für Anfänger verstehen - die Containertechnologie

Docker-Sicherheit
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Machen Sie sich ein Bild vom Docker Container.

Im heutigen Technologiebereich "Es funktioniert auf meinem System" ist eine sehr häufige Phrase, die von Entwicklern verwendet wird. Es gibt jedoch viele Fälle, in denen die auf einem Entwicklersystem ausgeführte Anwendung nicht auf einem Tester oder einem Produktionscomputer ausgeführt wird, was zu Chaos führt.

Docker wurde eingeführt, um solche Probleme zu lösen. 💯

Why Docker?

Lassen Sie mich Ihnen von meiner persönlichen Erfahrung erzählen, warum Docker so wichtig ist.

Ich arbeitete mit meinem Team an einem Full-Stack-Projekt, bei dem ich eine Anwendung erstellen musste, die Angular im Frontend, Node.js im Backend und MySQL als verwendet Datenbank. Bei der Arbeit an dieser Anwendung mit mehreren Technologien sind wir auf mehrere Probleme gestoßen.

  • Das erste Problem war die Betriebssystemkompatibilität. Da ich mehrere Technologien verwendete, musste ich sicherstellen, dass alle Technologien mit dem von mir verwendeten Betriebssystem kompatibel sind. Es gab Fälle, in denen die Version von Angular nicht mit der von mir verwendeten Betriebssystemversion funktionierte, sodass ich die Betriebssystemversion mehrmals ändern musste.
  • Da sich die Architektur der von mir erstellten Anwendung im Laufe der Zeit geändert hat, kam ich in Situationen, in denen die Versionen und Abhängigkeiten der Software und Bibliotheken aktualisiert werden mussten. Ich hatte viele Kompatibilitätsprobleme, bevor ich zu einer stabilen Version aller Technologien kam, die ich für meine Anwendung verwendete. Das Upgrade auch nur eines einzelnen Tools, das in meiner Anwendung verwendet wurde, war ein riskantes Geschäft.
  • Später arbeiteten mehr Entwickler an meiner Anwendung. Da der Technologie-Stack sehr umfangreich war, mussten sie mehrere Befehle stundenlang ausführen, um ihre Umgebung einzurichten, die mit der Anwendung kompatibel war. Ich musste die Umgebung jedes Entwicklers überprüfen und bewerten, um sicherzustellen, dass die von mir verwendete Technologieversion nicht übereinstimmt.
  • Wenn einer der Entwickler mit dem Betriebssystem, mit dem ich meine Anwendung erstellt habe, nicht vertraut war, war es für ihn eine Herausforderung, an der Anwendung zu arbeiten.

All dies erschwerte das rechtzeitige Entwickeln, Erstellen und Versenden der Anwendung. Hier kam Docker ins Spiel. Es löst alle Probleme, die ich gerade erwähnt habe.

What is Docker?

Docker ist eine Containerisierungsplattform, die die Anwendung und ihre Abhängigkeiten in einem Container zusammenfasst, sodass die Anwendung in jeder Umgebung, sei es Entwicklung, Staging oder Produktion, nahtlos funktioniert.

Es ist ein Tool, das das Erstellen, Bereitstellen und Ausführen von Anwendungen mithilfe von Containern vereinfacht. Docker-Container sind leicht Alternativen zu virtuellen Maschinen, und es verwendet das Host-Betriebssystem. Sie müssen keinen RAM in Containern vorab zuweisen, wie dies bei virtuellen Maschinen der Fall ist.

Es ist eine Open-Source-Plattform für Entwickler, Systemadministratoren und Unternehmen, mit der verteilte Anwendungen im laufenden Betrieb erstellt, ausgeliefert und ausgeführt werden können.

Weitere Informationen zur internen Funktionsweise von Docker finden Sie unter Docker-Architektur.

Docker Images, Containers, Dockerfile

Docker-Image

Das Docker-Image ist eine Vorlage, die zum Ausführen einer Anwendung benötigt wird. Es besteht aus Anwendungscode, Bibliotheken, Tools, Abhängigkeiten usw.

Docker-Images sind schreibgeschützte, unveränderliche Dateien, die manchmal auch als Snapshots bezeichnet werden. Sie starten oder führen kein Docker-Image aus; Sie bauen einen Behälter durch ihn. Wenn ein Container aus einem Docker-Image erstellt wird, wird eine Containerebene über der Imageebene erstellt.

Es muss ein Basis-Docker-Image vorhanden sein, mit dem mehrere andere Docker-Images mit einigen Änderungen am Basis-Image erstellt werden.

Docker-Hub ist ein Repository von Docker-Images für fast alle Technologie-Stacks. Sie können ein Docker-Image von DockerHub abrufen und mit dem Erstellen von Containern beginnen.

Dockerhub-Geekflare

Docker Container

Docker-Container sind ausführbare Softwarepakete, die alle zum Ausführen einer Anwendung erforderlichen Abhängigkeiten enthalten. Mit Docker-Containern können Anwendungen in verschiedenen Computerumgebungen effizient arbeiten.

Nachfolgend finden Sie die Funktionen der Docker-Container:

  • Leichtgewicht
  • Minimaler Overhead (CPU / IO / Netzwerk)
  • Schnellere Bereitstellungen
  • Leicht skalierbar
  • Speicherverbrauch verringern
  • Tragbar, überall laufen lassen.
  • Minimales Basisbetriebssystem
  • Anwendungsisolation

Dockerfile

Dockerfile ist ein Shell-Skript, das alle Aufgaben definiert, die ausgeführt werden müssen. Aus einer Docker-Datei erstellen Sie ein Docker-Image. Aus dem Docker-Image erstellen Sie einen Docker-Container.

Docker-Datei

Installing Docker

Docker kann problemlos auf verschiedenen Linux-Plattformen, Windows oder MacOS installiert werden. Schauen Sie sich diesen Beitrag an So installieren Sie Docker unter Ubuntu, CentOS, Debian und Windows.

Ebenfalls, Docker-Desktop ist für Windows- und Mac-Computer verfügbar. Es ist eine ausführbare Anwendung, die sehr einfach zu installieren ist und hilft, Anwendungen in Windows- und Mac-Umgebungen zu erstellen und zu containerisieren.

Docker Editions and Pricing

Es gibt zwei Ausgaben von Docker:

  • Community-Edition (CE)
  • Enterprise-Edition (EE)

Die Docker Community Edition ist Open Source und kann kostenlos verwendet werden. Docker CE zielt darauf ab, wo Sie es selbst tun DevOps Ingenieure können ihre Anwendungen selbst containerisieren.

Die Docker Enterprise Edition enthält drei Versionen: basic, Standard, und advanced. Die Basic Edition enthält eine Docker-Plattform, Support und Zertifizierung, während die Standard- und Advanced-Editionen zusätzlich zu den Funktionen der Basic Edition Container-Management- und Docker-Sicherheits-Scanning-Funktionen enthalten.

Meistens nutzen Technikfreaks Docker kostenlos. Wenn Sie jedoch erweiterte Funktionen benötigen, können Sie die kostenpflichtige Version von Docker verwenden. Die Preise hängen von Funktionen wie Repository-Verwaltung, CI / CD-Funktionen, Benutzerverwaltung, Entwicklertools und Supportoptionen ab.

Nachfolgend finden Sie die Plandetails von Docker:

Docker Pricing - Geekflare

Nachdem Sie die Grundlagen von Docker kennen, möchte ich Ihnen ein sehr einfaches Docker-Beispiel zeigen.

Docker Hello World Container

Ich werde eine ziehen Hallo-Welt Docker Bild Erstellen Sie in DockerHub das Image, um einen Docker-Container zu erstellen, in dem die Anwendung ausgeführt wird. Dieses Bild enthält eine einfache Anwendung zum Drucken einer Hallo-Nachricht von Docker.

Zunächst muss ich das Docker-Image der Hallo-Welt auf meinem Ubuntu-Computer abrufen.

Hinweis: Dies setzt voraus, dass Docker bereits installiert ist. Wenn noch nicht, schauen Sie sich das an Installationsanleitung.

geekflare@geekflare:~$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest

Überprüfen Sie, ob das Docker-Image gezogen wurde.

geekflare@geekflare:~$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hello-world                    latest              bf756fb1ae65        7 months ago        13.3kB
kubernetesui/dashboard         v2.0.0-beta8        eb51a3597525        8 months ago        90.8MB
geekflare_mongodb              latest              095d17727ca0        12 months ago       325MB

Führen Sie den folgenden Befehl aus, um einen Container zu erstellen und die Anwendung auszuführen.

geekflare@geekflare:~$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

Listen Sie nun alle Docker-Container auf. Sie können sehen, dass der Hello-World-Container vor 1 Minute ausgeführt wurde.

geekflare@geekflare:~$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
1a1056caffc4        hello-world         "/hello"                 1 minutes ago       Exited (0) 1 minutes ago                         zealous_bose
b0095c1e5536        geekflare_mongodb   "/bin/sh -c usr/bin/…"   12 months ago       Exited (0) 12 months ago                         mongo_container

Erkunden Sie Docker. Probieren Sie diese grundlegenden aus Docker-Befehle.

Running Nginx Inside a Docker Container

Hier zeige ich Ihnen, wie Sie Nginx in einem Container bereitstellen.

Der folgende Befehl sucht lokal nach einem Nginx-Bild. Da kein lokales Image verfügbar ist, wird das Nginx-Docker-Image vom Docker-Hub abgerufen. Anschließend wird ein Container mit dem Namen erstellt nginx_geekflare Verwenden Sie das Nginx-Docker-Image und führen Sie Nginx auf Port 80 aus.

geekflare@geekflare:~$ docker run --name nginx_geekflare -p 80:80 -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
bf5952930446: Pull complete 
ba755a256dfe: Pull complete 
c57dd87d0b93: Pull complete 
d7fbf29df889: Pull complete 
1f1070938ccd: Pull complete 
Digest: sha256:36b74457bccb56fbf8b05f79c85569501b721d4db813b684391d63e02287c0b2
Status: Downloaded newer image for nginx:latest
fdad18387b27b48b8f2e14f8641791cc4d5edf667cc664198b67579cd76a5162

Wenn Sie die auf Ihrem System verfügbaren Docker-Images auflisten, sehen Sie, dass das Nginx Docker-Image abgerufen wurde.

geekflare@geekflare:~$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
nginx                          latest              08393e824c32        4 days ago          132MB
hello-world                    latest              bf756fb1ae65        7 months ago        13.3kB
kubernetesui/dashboard         v2.0.0-beta8        eb51a3597525        8 months ago        90.8MB
geekflare_mongodb              latest              095d17727ca0        12 months ago       325MB

Führen Sie den folgenden Befehl aus, um alle laufenden Container aufzulisten. Sie können den Behälter sehen nginx_geekflare läuft bei 0.0.0.0:80

geekflare@geekflare:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                NAMES
fdad18387b27        nginx               "/docker-entrypoint.…"   58 seconds ago      Up 32 seconds                   0.0.0.0:80->80/tcp   nginx_geekflare
1a1056caffc4        hello-world         "/hello"                 About an hour ago   Exited (0) About an hour ago                        zealous_bose
b0095c1e5536        geekflare_mongodb   "/bin/sh -c usr/bin/…"   12 months ago       Exited (0) 12 months ago                            mongo_container

Gehen Sie zu Ihrem Browser und öffnen Sie 0.0.0.0:80. Sie können sehen, dass nginx in einem Container aktiv ist.

Nginx-Container

Common Docker Use Cases

Vereinfachung der Konfiguration: Docker kann mit Hilfe seiner Konfiguration auf jeder Plattform ausgeführt werden, ohne den tatsächlichen Overhead einer virtuellen Maschine.

Sie können die Konfigurationsdatei in den Code einfügen und Umgebungsvariablen übergeben, um verschiedenen Umgebungen gerecht zu werden. Damit kann ein Docker-Image in einer anderen Umgebung verwendet werden.

Codeverwaltung: Der Code durchläuft auf seinem Weg von der Entwicklung zur Produktion eine andere Umgebung.

Jede Umgebung unterscheidet sich geringfügig von der anderen. Docker beseitigt diesen Unterschied, indem es eine konsistente Umgebung bereitstellt und die Entwicklung und Codierung so viel komfortabler macht.

Code

Da Docker-Images unveränderlich sind, haben sie den Vorteil, dass sich die Anwendungsumgebung von Entwickler zu Produktion nicht ändert.

Verbesserte Entwicklungsproduktivität: Die beiden wesentlichen Ziele im Entwicklungsökosystem sind die Replikation der Entwicklungsumgebung so nah wie möglich an der Produktionsumgebung und das nächste Ziel, den Qualitätscode so schnell wie möglich bereitzustellen.

Mit Docker kann der Code in einem Container ausgeführt werden, der die Produktionsumgebung widerspiegelt. Im Gegensatz zu VM verfügt Docker über eine geringere Overhead-Speicherkapazität, wodurch mehrere Dienste ausgeführt werden können.

Das andere Ziel wird erreicht, indem wir das gemeinsam genutzte Docker-Volume verwenden, damit der Anwendungscode dem Container vom Host zur Verfügung steht. Auf diese Weise kann der Entwickler den Quellcode von seiner Plattform und seinem Editor aus bearbeiten, was sich auf die laufende Umgebung im Docker auswirkt.

Isolierung von Anwendungen: Es gibt Fälle, in denen eine Anwendungsisolierung erforderlich sein kann, z. API Server, die unterschiedlichen Apache und unterschiedliche Abhängigkeiten erfordern.

Das Ausführen von API-Servern unter verschiedenen Containern ist ein viel besserer Ausweg.

Debugging-Funktionen: Docker bietet zahlreiche Tools, die gut mit Containern funktionieren, mit der Möglichkeit, Checkpoints in Container und auch in verschiedene Container einzufügen, die beim Testen von Anwendungen sehr wichtig sind.

Schnelle Bereitstellung: Docker-Container können sehr schnell erstellt werden, was erreicht wird, da Container kein Betriebssystem starten, sondern nur die Anwendung ausführen.

Einmal eingestellt, geben sie Ihnen die Gewissheit, dass der Code, sobald er funktioniert hat, in allen Umgebungen funktioniert.

Fazit

Docker wird mit seinen enormen Vorteilen zu einer wertvollen Ergänzung der IT-Infrastruktur. Ich hoffe, das obige gibt Ihnen eine Vorstellung davon. Wenn Sie an Online-Kursen interessiert sind, würde ich die Teilnahme empfehlen Docker Mastery Online-Kurs.

Danke an unsere Sponsoren
Weitere großartige Lektüre zu DevOps
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder