Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Machen Sie sich ein Bild vom Docker-Container.

In der heutigen Technologiebranche ist "Es funktioniert auf meinem System" eine sehr verbreitete Redewendung unter Entwicklern. Aber es gibt viele Fälle, in denen die Anwendung, die auf dem System eines Entwicklers läuft, auf dem Rechner eines Testers oder auf einem Produktionsrechner nicht funktioniert, was zu Chaos führt.

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

Warum Docker?

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

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

  • Das erste Problem war die Kompatibilität mit dem Betriebssystem. Da ich mehrere Technologien verwendet habe, musste ich sicherstellen, dass alle Technologien mit dem von mir verwendeten Betriebssystem kompatibel sind. Es gab Fälle, in denen die Angular-Version nicht mit der von mir verwendeten Betriebssystemversion funktionierte, so dass ich die Betriebssystemversion mehrfach ändern musste.
  • Da sich die Architektur der Anwendung, die ich entwickelte, im Laufe der Zeit änderte, kam ich in Situationen, in denen die Versionen der Software und der Bibliotheken sowie die Abhängigkeiten aktualisiert werden mussten. Ich hatte mit vielen Kompatibilitätsproblemen zu kämpfen, bevor ich zu einer stabilen Version aller Technologien kam, die ich für meine Anwendung verwendete. Die Aktualisierung auch nur eines einzigen in meiner Anwendung verwendeten Tools war eine riskante Angelegenheit.
  • Später arbeiteten mehr Entwickler an meiner Anwendung. Da der Technologiestapel sehr umfangreich war, mussten sie stundenlang mehrere Befehle 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 es keine Abweichungen von der von mir verwendeten Technologieversion gab.
  • Und wenn einer der Entwickler nicht mit dem Betriebssystem zurechtkam, das ich für die Entwicklung meiner Anwendung verwendete, war es für ihn/sie eine Herausforderung, an der Anwendung zu arbeiten.

All dies erschwerte die Entwicklung, den Aufbau und die rechtzeitige Auslieferung der Anwendung. An dieser Stelle kam Docker ins Spiel. Es löst alle Probleme, die ich gerade erwähnt habe.

Was ist Docker?

Docker ist eine Containerisierungsplattform, die die Anwendung und ihre Abhängigkeiten in einem Container verpackt, so dass die Anwendung in jeder Umgebung nahtlos funktioniert, sei es in der Entwicklungs-, Staging- oder Produktionsumgebung.

Es handelt sich um ein Tool, das die Erstellung, Bereitstellung und Ausführung von Anwendungen mit Hilfe von Containern vereinfachen soll. Docker-Container sind leichtgewichtige Alternativen zu virtuellen Maschinen und verwenden das Host-Betriebssystem. Sie müssen in Containern keinen Arbeitsspeicher im Voraus zuweisen, wie Sie es bei virtuellen Maschinen tun.

Es handelt sich um eine Open-Source-Plattform für Entwickler, Systemadministratoren und Unternehmen, die verteilte Anwendungen erstellen, ausliefern und ausführen können.

Wenn Sie mehr darüber erfahren möchten, wie Docker intern funktioniert, lesen Sie die Docker-Architektur.

Docker-Bilder, Container, Dockerdatei

Docker-Bilder

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

Docker-Images sind unveränderliche, schreibgeschützte Dateien, die manchmal auch als Snapshots bezeichnet werden. Ein Docker-Image wird nicht gestartet oder ausgeführt, sondern Sie erstellen damit einen Container. Wenn ein Container aus einem Docker-Image erstellt wird, wird eine Container-Schicht über der Image-Schicht erstellt.

Es muss ein Basis-Docker-Image geben, das zur Erstellung mehrerer anderer Docker-Images mit einigen Änderungen am Basis-Image verwendet wird.

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 der Erstellung von Containern beginnen.

dockerhub-geekflare

Docker-Container

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

Im Folgenden finden Sie die Merkmale von Docker Containern:

  • Geringes Gewicht
  • Minimaler Overhead (CPU/IO/Netzwerk)
  • Schnellere Bereitstellung
  • Leicht skalierbar
  • Geringerer Speicherbedarf
  • Tragbar, überall einsetzbar.
  • Minimale Basis-OS
  • Isolierung von Anwendungen

Dockerdatei

Dockerdatei ist ein Shell-Skript, das alle auszuführenden Aufgaben definiert. Aus einer Dockerdatei erstellen Sie ein Docker-Image; aus dem Docker-Image erstellen Sie einen Docker-Container.

dockerfile

Installation von Docker

Docker kann problemlos auf verschiedenen Linux-Plattformen, Windows oder macOS installiert werden. Lesen Sie diesen Beitrag über die Installation von Docker unter Ubuntu, CentOS, Debian und Windows.

Auch Docker-Desktop ist für Windows- und Mac-Rechner verfügbar. Es handelt sich dabei um eine ausführbare Anwendung, die sehr einfach zu installieren ist und bei der Erstellung und Containerisierung von Anwendungen in Windows- und Mac-Umgebungen hilft.

Docker-Editionen und Preisgestaltung

Es gibt zwei Editionen von Docker:

  • Gemeinschaftsausgabe (CE)
  • Unternehmensausgabe (EE)

Die Community Edition von Docker ist quelloffen und kostenlos zu verwenden. Docker CE zielt auf einen "Do it yourself"-Ansatz ab, bei dem DevOps-Ingenieure ihre Anwendungen selbst containerisieren können.

Die Docker Enterprise Edition gibt es in drei Versionen - Grundlegend, Standard und Fortgeschrittene. Die Basisversion enthält eine Docker-Plattform, Support und Zertifizierung, während die Standard- und die erweiterte Version zusätzlich zu den Funktionen der Basisversion Funktionen für die Container-Verwaltung und das Scannen der Docker-Sicherheit enthalten.

Die meisten Techniker nutzen Docker kostenlos. Wenn Sie jedoch erweiterte Funktionen benötigen, können Sie die kostenpflichtige Version von Docker verwenden. Die Preise richten sich nach Funktionen wie Repository-Verwaltung, CI/CD-Funktionen, Benutzerverwaltung, Entwickler-Tools und Support-Optionen.

Im Folgenden finden Sie die Details zu den Tarifen von Docker:

Docker-Preise - geekflare

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

Docker Hallo Welt Container

Ich werde ein Hello-World-Docker-Bild von DockerHub ziehen und das Image bauen, um einen Docker-Container zu erstellen, auf dem die Anwendung ausgeführt wird. Dieses Image enthält eine einfache Anwendung, die eine Hallo-Nachricht von Docker ausdruckt.

Als erstes muss ich das hello-world Docker-Image auf meinen Ubuntu-Rechner ziehen.

Hinweis: Dies setzt voraus, dass Docker bereits installiert ist. Falls noch nicht, sehen Sie sich die Installationsanleitung an.

geekflare@geekflare:~$ docker pull hello-world
Standard-Tag verwenden: latest
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Neueres Image für hello-world:latest heruntergeladen

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

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

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

geekflare@geekflare:~$ docker run hello-world

Hallo von Docker!
Diese Nachricht zeigt, dass Ihre Installation korrekt zu funktionieren scheint.

Um diese Nachricht zu erzeugen, hat Docker die folgenden Schritte unternommen:
1. Der Docker-Client kontaktiert den Docker-Daemon.
2der Docker-Daemon hat das "hello-world"-Image aus dem Docker Hub gezogen.
(amd64)
3. Der Docker-Daemon hat aus diesem Image einen neuen Container erstellt, in dem die ausführbare Datei
läuft, die die Ausgabe erzeugt, die Sie gerade lesen.
4der Docker-Daemon leitete diese Ausgabe an den Docker-Client weiter, der sie
an Ihr Terminal schickte.

Um etwas Ehrgeizigeres auszuprobieren, können Sie einen Ubuntu-Container mit folgendem Befehl starten:
$ docker run -it ubuntu bash

Teilen Sie Images, automatisieren Sie Arbeitsabläufe und mehr mit einer kostenlosen Docker-ID:
https://hub.docker.com/

Weitere Beispiele und Ideen finden Sie unter:
https://docs.docker.com/get-started/

Hören Sie nun alle Docker-Container auf. Sie 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

Beginnen Sie mit der Erforschung von Docker; probieren Sie diese grundlegenden Docker-Befehle aus.

Nginx innerhalb eines Docker-Containers ausführen

Hier zeige ich Ihnen, wie Sie Nginx innerhalb eines Containers einsetzen können.

Der folgende Befehl sucht lokal nach einem Nginx-Image. Da kein lokales Image verfügbar ist, zieht er das Nginx-Docker-Image aus dem Docker-Hub. Anschließend wird ein Container mit dem Namen nginx_geekflare unter Verwendung des Nginx-Docker-Images erstellt und Nginx auf Port 80 ausgeführt.

geekflare@geekflare:~$ docker run --name nginx_geekflare -p 80:80 -d nginx
Das Image 'nginx:latest' kann lokal nicht gefunden werden
latest: Pulling from library/nginx
bf5952930446: Pull complete 
ba755a256dfe: Pull komplett 
c57dd87d0b93: Pull complete 
d7fbf29df889: Vollständig abrufen 
1f1070938ccd: Pull complete 
Digest: sha256:36b74457bccb56fbf8b05f79c85569501b721d4db813b684391d63e02287c0b2
Status: Neueres Image für nginx heruntergeladen:latest
fdad18387b27b48b8f2e14f8641791cc4d5edf667cc664198b67579cd76a5162

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

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

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

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" Vor ungefähr einer Stunde Beendet (0) Vor ungefähr einer Stunde zealous_bose
b0095c1e5536 geekflare_mongodb "/bin/sh -c usr/bin/..." Vor 12 Monaten Beendet (0) Vor 12 Monaten mongo_container

Gehen Sie in Ihrem Browser auf 0.0.0.0:80 und Sie sehen, dass nginx in einem Container läuft.

Nginx-Container

Häufige Anwendungsfälle von Docker

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

Sie können die Konfigurationsdatei in den Code einfügen und Umgebungsvariablen übergeben, um sich an verschiedene Umgebungen anzupassen. So kann ein Docker-Image in einer anderen Umgebung verwendet werden.

Code-Verwaltung: Der Code durchläuft auf seinem Weg von der Entwicklung zur Produktion verschiedene Umgebungen.

Jede Umgebung unterscheidet sich ein wenig von der anderen. Docker beseitigt diese Unterschiede, indem es eine konsistente Umgebung bereitstellt, was die Entwicklung und Codierung sehr viel komfortabler macht.

Code

Da Docker-Images unveränderlich sind, haben sie den Vorteil, dass sich die Anwendungsumgebung von der Entwicklung bis zur Produktion nicht ändert.

Verbesserte Entwicklungsproduktivität: Die beiden wichtigsten Ziele im Entwicklungs-Ökosystem bestehen darin, die Entwicklungsumgebung so nah wie möglich an die Produktionsumgebung anzugleichen und als nächstes Ziel so schnell wie möglich hochwertigen Code zu liefern.

Docker ermöglicht die Ausführung des Codes in einem Container, der die Produktionsumgebung widerspiegelt. Im Gegensatz zu VM hat Docker einen geringeren Overhead in Bezug auf die Speicherkapazität, wodurch mehrere Dienste ausgeführt werden können.

Das andere Ziel ist erreicht, da wir das Shared Volume von Docker verwenden, damit der Anwendungscode vom Host aus für den Container verfügbar ist. Dies ermöglicht es dem Entwickler, den Quellcode von seiner Plattform und seinem Editor aus zu bearbeiten, was sich in der laufenden Umgebung innerhalb von Docker widerspiegeln wird.

Isolierung von Anwendungen: Es gibt Fälle, in denen die Isolierung von Anwendungen erforderlich ist, z.B. bei API-Servern, die einen anderen Apache und eine andere Reihe von Abhängigkeiten benötigen.

Die Ausführung von API-Servern in verschiedenen Containern ist ein viel besserer Ausweg.

Debugging-Fähigkeiten: Docker bietet zahlreiche Tools, die gut mit Containern zusammenarbeiten. Sie können Checkpoints innerhalb von Containern und auch zwischen verschiedenen Containern einfügen, was beim Testen von Anwendungen sehr wichtig ist.

Schnelles Deployment: Docker-Container können recht schnell erstellt werden, da in Containern kein Betriebssystem hochgefahren wird, sondern nur die Anwendung läuft.

Einmal eingerichtet, geben sie Ihnen die Gewissheit, dass der Code in allen Umgebungen funktioniert, wenn er einmal funktioniert hat.

Fazit

Docker wird mit seinen zahlreichen Vorteilen zu einer wertvollen Ergänzung der IT-Infrastruktur. Ich hoffe, die obigen Ausführungen vermitteln Ihnen einen Eindruck davon. Wenn Sie an Online-Kursen interessiert sind, empfehle ich Ihnen den Online-Kurs Docker Mastery.

  • Avi
    Autor
    Avi ist ein Technik-Enthusiast mit Fachkenntnissen in Trendtechnologien wie DevOps, Cloud Computing, Big Data und vielen mehr. Seine Leidenschaft ist es, Spitzentechnologien zu lernen und sein Wissen mit anderen zu teilen, indem er... mehr lesen
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder