Eine praktische Einführung in Docker-Container

Eine praktische Einführung in Docker-Container

Dockers Popularität hat seit seiner Einführung im Jahr 2013 in die Höhe geschossen. Unternehmen und Einzelpersonen nutzen jetzt oder planen, es in Räumlichkeiten oder in der Cloud zu verwenden. Die Flexibilität von Docker appelliert an Entwickler, Systemadministratoren und Management.

Dieser Artikel zeigt, wie man mit Docker beginnt und grundlegende Befehle zeigt, um Sie in den Zug des Containers zu bringen.

In diesem Tutorial lernen Sie:

  • Was ist Docker und wie es verwendet wird?.
  • So installieren Sie Docker unter Linux.
  • So laufen Sie Docker -Container.

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Jede Linux -Verteilung
Software Docker
Andere Privilegierter Zugriff auf Ihr Linux -System als Root oder über die sudo Befehl.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Grundlegende Docker -Konzepte

Traditionelle Virtualisierungsplattformen wie VirtualBox und VMware, einen gesamten Computer abstrahieren, um das zu isolieren Gastgeber Und Gast Betriebssysteme und erforderlich, dass ein ganzes Betriebssystem in der installiert ist Gast Virtuelle Maschine (VM). Die Virtualisierung von Docker verfolgt einen anderen Ansatz - es ist nur das Betriebssystem abstrahiert, was bedeutet, dass Host und Gäste dasselbe teilen Kernel.

Die Vorteile sind das Gäste (genannt Behälter) müssen kein ganzes Betriebssystem packen, was sie leicht macht - klein und sehr schnell zu starten. Außerdem entstehen Docker -Container durch direkte Vernetzung mit dem Host -Betriebssystem keine Leistungsstrafen der traditionellen Virtualisierung, was die Übersetzung von Systemaufrufen zwischen Gast- und Host -Betriebssystemen über Treiber erfordert, die eine virtuelle Hardware abstrakten.

Die Nachteile sind, dass es beispielsweise nicht möglich ist, einen Windows -Gast auf einem Linux -Host zu hosten und dass alle Gäste Ressourcen (CPU, RAM und Disk) auf dem Host teilen, was bedeutet. Es ist sicher, dass Docker nicht beabsichtigt, die traditionelle Virtualisierung zu ersetzen, die noch viele gültige Szenarien aufweist. Es bietet nur eine andere Möglichkeit, die Anwendungsisolation zu erhalten und gleichzeitig die Abhängigkeiten der Bibliotheken zu reduzieren, ohne die Leistung zu verlieren.

Mit Docker können Sie starten Behälter, die Instanzen von Instanzen von Bilder. Ein Bild enthält die Festplatte mit allen Bibliothekenabhängigkeiten, die zur Ausführung einer Anwendung erforderlich sind, während ein Container den Kontext der Ausführung enthält. Es kann mehrere Container desselben Bildes geben, die gleichzeitig von den anderen getrennt sind.

Es gibt eine Empfehlung, dass ein Docker -Container nur eine Anwendung ausführt, die häufig falsch interpretiert wird, um „nur einen Prozess auszuführen“. Es ist kein Problem, mehr als einen Prozess in einem Container auszuführen, solange sie zur gleichen Anwendung gehören. Eine komplexe Anwendung kann jedoch die Ausführung mehrerer Container erfordern, z. B. eine für den Webserver (Apache, Nginx), eine für die Anwendung (PHP-FPM) und eine für die Datenbank (MySQL, PostgreSQL, MongodB ). Diese Container können im selben oder in verschiedenen Hosts ausgeführt werden. Container im selben Host kommunizieren über ein von Docker verwaltetes virtuelles Netzwerk.



Docker -Bilder werden aus einem Repository mit dem Namen abgerufen Registrierung und werden vor Ort zwischengespeichert. Wenn eine Registrierung nicht angegeben ist, versucht Docker, das Bild im Standard -Repository zu finden, das genannt wird Docker Hub. Der Docker Hub enthält eine enorme Menge von Bildern, die von Unternehmen und Einzelpersonen verwendet werden können - und Sie können auch Ihre Bilder veröffentlichen. Außerdem gibt es auch die Docker Store, wo Unternehmen professionell kuratierte Bilder ihrer Software anbieten können. Es wird empfohlen, dass Sie einige Zeit damit verbringen, zu durchsuchen und zu lernen, wie diese Repositories funktionieren.

Genug gesagt: Lassen Sie uns Docker installieren und einige grundlegende Befehle lernen.

Installieren von Docker unter Linux

Ubuntu

In Ubuntu Bionic Beaver 18.04 ist es unkompliziert, Docker installiert zu haben.

# APT Installieren Sie Docker.io 

Debian

Wenn Sie Debian -Tests oder instabil durchführen, funktioniert der obige Befehl auch. Für Debian Stable (Stretch) besuchen Sie unseren Docker -Engine auf Debian 9 Stretch Linux Installation Guide.

Centos

In Centos 1804 ist es eins Yum Befehl.

# Yum Installieren Sie Docker 

Fedora

In Fedora 28 ist es auch bereit, mit einem installiert zu werden DNF Befehl.

# DNF Installieren Sie Docker 

Nach der Installation der Docker

Sobald es installiert ist, können Sie überprüfen, ob der Docker -Service ausgeführt wird.

# Service Docker Status 

Wenn nicht, starten Sie es.

# Service Docker Start 

Sobald der Service ausgeführt wird, können Sie überprüfen, ob es laufende Container gibt.

# Docker PS 

Wenn Sie nicht tippen wollen sudo Um mit Docker Service zu interagieren, fügen Sie Ihren Benutzer einfach zur Docker Group hinzu. Sie müssen sich erneut anmelden, um die Änderung in Kraft zu setzen.

# Usermod -a -g Docker Benutzername 

Überprüfen Sie nach dem Anmeldung Sie befinden sich in der Docker Group

$ gruppen roger adm cdrom sudo dipDev lpadmin sambashare Docker 


Jetzt brauchst du nicht sudo mit dem Docker -Motor zu interagieren.

Ausführen eines Docker -Containers

Lassen Sie uns a ausführen Hallo Welt Container.

$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world d1725b59e92d: Pull complete Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788 Status: Downloaded newer image for hello-world:latest Hello from Docker! Diese Nachricht zeigt, dass Ihre Installation anscheinend korrekt funktioniert. Um diese Nachricht zu generieren, hat Docker die folgenden Schritte unternommen: 1. Der Docker -Client kontaktierte den Docker -Daemon. 2. Der Docker-Daemon zog das Bild "Hallo-Welt" aus dem Docker-Hub. (AMD64) 3. Der Docker -Daemon hat einen neuen Container aus dem Bild erstellt, in dem die ausführbare Datei ausgeführt wird, die die Ausgabe erzeugt, die Sie derzeit lesen. 4. Der Docker -Daemon hat diese Ausgabe an den Docker -Client gestreamt, der sie an Ihr Terminal gesendet hat. Um etwas Ehrgeizigeres auszuprobieren, können Sie einen Ubuntu -Container mit: $ Docker Run -it ubuntu Bash -Teilen von Bildern ausführen, Workflows automatisieren und vieles mehr mit einer kostenlosen Docker -ID: https: // Hub.Docker.Com/Weitere Beispiele und Ideen finden Sie unter: https: // docs.Docker.com/starten/ 
Kopieren

Der Befehl ist wirklich einfach, aber viele Dinge sind passiert. Erstens erkannte der Docker -Engine, dass das angeforderte Bild nicht im lokalen Cache war (Zeile 2). Dann wird das Bild aus der Docker -Registrierung gezogen und lokal gespeichert (Zeile 3). Schließlich wird ein Container erstellt, ausgeführt (Zeile 8) und beendet. Wenn Sie es erneut versuchen, werden Sie feststellen, dass die Ausführung viel schneller ist, da sowohl Bild als auch Container zwischengespeichert sind. Überprüfen Sie nun die Bilder, die lokal gespeichert sind.

$ docker bilder repository Tag Bild-ID Erstellt Größe Hallo-Welt Neueste 4AB4C602AA5E vor 2 Wochen 1.84 KB 
Kopieren

Beachten Sie, dass die Hallo Welt Bild ist minimal, mit nur 1.84 kb Größe. Dies zeigt, dass ein Großteil des Host -Betriebssystems verwendet wird und dass das Bild nur die Anwendungsabhängigkeiten enthält.

Sie können dieses Bild entfernen.

$ docker bilder rm hello world $ docker bilder 

Lassen Sie uns nun etwas Ehrgeizigeres tun: Pull und Apache Webserver Image und führen Sie einen Container aus.

$ DOCKKER Pull httpd Verwenden Sie Standard -Tag: Neueste: Ziehen aus Bibliothek/httpd f189db1b88b3: Pull Complete Ba2d31d4e2e7: Pull Complete 23A65F5E374: Pull Complete 5e8eccbd4bc6 Complete 4C145EC18D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8). 8631904c6e92918b6c7dd82b72512714e7fbc3f1a1ace2De17cb2746c401b8fb Status: Heruntergeladen neuer Bild für HTTPD: Neueste $ DOCKKER-Bilder Repository-Tag-ID-Größe HAIDLE GRÖSSE HAISE GRÖSSE STUDED HAIDAL-WORD DURCHED 4AB4AB4C602A5E 2 WOLLGESTELLEN 2 WOLLGESTELLTE HAIDADE HAIDAL-WORDELD 4AB4C602A5E 2 WOLLGESTELLTE HAIDAHE HAISIEREN GRÖSSE HADE-WORD DOWNLADED 4AB4C602A5E 2 Wochen und.84KB Httpd Neueste D595A4011AE3 vor 6 Wochen 178 MB 
Kopieren

Dann führen Sie einen Container aus diesem Bild aus.

$ dockker run -d -p 8000: 80 httpd dd703b1590a91bdc10488b48798e42ddecd1c6519324a613f4b563c21874a98 roger@Slash: ~ $ DOCKKER PS CONTER CONTER ID CONTRIGER ID CONTPERSIDENSBETRIEB.0.0.0: 8000-> 80/TCP Cranky_Torvalds 
Kopieren

In seiner einfachsten Form wäre der Befehl Docker Run httpd, Aber der Container würde gleich nach dem Ausführen von Apache gestoppt werden, und kein Port würde freigelegt werden. Der -D (Abnahme) Option ist erforderlich, damit der Container im Hintergrund läuft.

Der -P 8000: 80 Die Option ist die Zuordnung von Port 80 des Containers auf Port 8000 im Host, so. Standardmäßig sind Containerports dem Host nicht ausgesetzt. Jetzt können Sie einen Webbrowser verweisen http: // localhost: 8000 und siehe die Apache -Testseite.



Apache -Standardseite, die angibt, dass es funktioniert

OK, aber wie man die Webseite ändert? Wir müssen einen Ordner vom Host in den Container verknüpfen /usr/local/apache2/htdocs/ Verzeichnis (wir werden später sehen, dass das Apache -Bild aus einer Debian Jessy erstellt wird, unabhängig vom Linux -Geschmack Ihres Hosts). Stoppen Sie den Behälter und führen Sie ihn erneut aus.

$ docker ps $ docker stop canky_torvalds $ echo "meine webseite"> index.html $ docker run -d -p 8000: 80 -v "$ pwd":/usr/local/apache2/htdocs/httpd 
Kopieren

Wir haben eine geschaffen Index.html Datei im aktuellen Verzeichnis im Host und kartierte dieses Verzeichnis innerhalb des htdocs Verzeichnis des Containers mit dem -v schalten. Aktualisieren Sie nun den Webbrowser.

Index.html

Jetzt das Topping: Experimentieren Sie die Bearbeitung der Index.html Datei im Host und aktualisieren Sie den Webbrowser, ohne den Status des Containers zu ändern. Ja, wenn eine Datei bearbeitet wird oder eine neue Datei in das aktuelle Verzeichnis hinzugefügt wird, wird sie aufgrund des Containers im Container verfügbar gemacht -v Kartierung.

Erstellen Sie eine andere Datei und greifen Sie im Browser darauf zu.

$ echo "zweite Seite"> Index2.html 


Index2.html

Wenn Sie fertig sind, stoppen Sie die Containerausführung.

$ docker stop Angry_Poincare 

Beachten Sie, dass Sie jetzt einen Webserver bereit haben, um ihn zu ausgeführt, wann immer Sie ihn benötigen, und Sie keine Konfigurationsdatei in Ihrem Betriebssystem berührt haben. Es ist alles im Apache -Bild, das von Docker zwischengespeichert wird. Darüber hinaus können Sie das Bild herunterladen und einen Container auf jedem anderen Computer starten.

Abschluss

In diesem Artikel wurde die Hauptdockerkonzepte und einige grundlegende Befehle eingeführt. Ich hoffe, Sie verstehen die Vorteile und sehen, dass es nicht kompliziert ist, Docker zu verwenden, sobald die Konzepte verstanden werden, ist es nicht kompliziert, Docker zu verwenden. Zukünftige Artikel werden andere Funktionen und Anwendungsfälle darstellen.

Mehr in dieser Docker -Artikelserie

  • So interagieren Sie mit Docker -Containern
  • So stellen Sie Docker -Bilder mit Dockerfiles an

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mastering -Bash -Skriptschleifen beherrschen
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Beste Linux -Distribution für Entwickler
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Dinge zu installieren auf Ubuntu 22.04
  • Linux -Download
  • Wie man Kali Linux und Windows 10 Dual -Boot -Start hat