So interagieren Sie mit Docker -Containern

So interagieren Sie mit Docker -Containern

Dieser Artikel erweitert den vorherigen Docker -Artikel und zeigt an.

In diesem Tutorial lernen Sie:

  • So führen Sie Befehle in Containern aus
  • So installieren Sie Software in Containern
  • So überprüfen Sie den Containerstatus
  • So greifen Sie mit Bash auf Behälter zu
  • Wie man Änderungen in Bilder bestehen
  • So entfernen Sie nicht verwendete Behälter und Bilder
PHP installiert.

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

So interagieren Sie mit Docker -Containern

Im ersten Artikel dieser Serie haben Sie Docker -Konzepte und einige grundlegende Befehle gelernt und gesehen. Lassen Sie uns jetzt tiefer gehen, in einen laufenden Container einsteigen und einige Befehle ausführen.



Ausführungsbefehle in einem laufenden Container ausführen

Im vorherigen Artikel haben Sie einen Apache -Container gestartet. Das zugrunde liegende Bild hatte nicht den PHP installiert, sodass es nur in der Lage war, statische HTML -Seiten zu servieren. Lassen Sie uns einen Container mit Apache und PHP installiert. Falls Sie sich fragen, sind Bilder bereit, die sowohl mit Apache als auch mit PHP installiert werden können, und sie können auf Docker Hub gefunden werden. Wir tun dies nur, um zu demonstrieren, wie ein Bild an Ihre Bedürfnisse angepasst werden kann.

Beginnen wir also eine Debian -Instanz mit einer ähnlichen Befehlszeile des vorherigen Artikels, aber mit zwei Unterschieden: Geben wir ihm einen Namen (namens (--Nennen Sie Debian_Container), damit wir uns später darauf beziehen und ein Terminal zuweisen, damit es ausgeführt werden kann (-Es).

$ Docker Run -it --Name Debian_Container -d -p 8000: 80 -v "$ pwd":/var/www/html debian 

Wir können mit einem laufenden Docker -Container interagieren. Es wurde zuvor mitgeteilt, dass die Container denselben Kernel wie das Betriebssystem des Hosts teilen. Lass uns das Prüfen.

$ docker exec debian_container uname -a 

Der Befehl Docker Exec Oben führt der angegebene Befehl im Container aus und zeigen Sie die Ausgabe an.

Alle Docker -Befehle haben eine zugeordnete Hilfe. Daher können wir die Optionen sehen Docker Exec Akzeptiert:

$ docker Exec -Help 

Jetzt können Sie mit anderen Befehlen herumspielen:

$ docer exec debian_container ls -l $ docker exec debian_container pwd $ docker exec debian_container whoami $ docker exec debian_container cat /etc /issue 
Kopieren

In diesem letzten Befehl haben wir erfahren, dass der Container Debian 9 trotz des Betriebssystems Ihrer Maschine ausführt. Wie bereits erwähnt, teilen das Host -Betriebssystem und der Container nur den Kernel.

Wenn Sie es versucht haben, einen Befehl im Container nicht ausführen konnten, ist er wahrscheinlich nicht da. Das Bild (wie alle anderen Bilder) wurde aus einem minimalen Debian -Setup erstellt, sodass jedes zusätzliche Tool installiert werden muss. Es erreicht zwei Ziele: kleinere Scheibengröße und verbesserte Sicherheit, da weniger Software weniger Fehler ausnutzt.

Lassen Sie uns nun in den Behälter gehen.

$ docker exec -t -t debian bash root@b5c694a02248:/usr/local/apache2# 
Kopieren

Beachten Sie, dass sich die Eingabeaufforderung geändert hat und jetzt Benutzer sind Wurzel im Behälter (B5C694A02248 ist der Hostname im Container) in einer Bash -Schale.



Software in einen Container installieren

Wir haben jetzt eine Shell im Container mit dem Benutzer Wurzel. Da es sich um eine geschnittene Version von Debian handelt, gibt es nicht einmal die Befehle Spitze Und ps. Lassen Sie uns sie installieren.

# APT Update # APP -APP -Procps installieren 
Kopieren

Sie können sehen, womit läuft Spitze Und PS -f.

root@f5b423465e03:/# ps -f uid pid ppid c Stime tty ty ty cmd root 1 0 0 0 19:46 Punkte/0 00:00:00 Bash Root 42 0 0 0 19:49 Punkte/1 00:00:00 Bash Root 310 42 0 19:53 Punkte/1 00:00:00 PS -EF root@f5b423465e03:/# 
Kopieren

Ja, es ist sparsam. Docker -Container haben normalerweise die absolute minimale Anzahl von Prozessen, die ausgeführt werden. Um die Shell zu verlassen und zu Ihrem Host -Betriebssystem zurückzukehren, beenden Sie einfach Bash (Typ Typ Ausfahrt oder Strg+d).

Beachten Sie, dass viele Dateien von heruntergeladen wurden von APT -Update Und APT -Installation. Sie alle existieren auf der Scheibe des laufenden Behälters. Sie existieren immer noch, wenn der Container gestoppt und wieder begonnen wird (Docker Stop debian_container; Docker starten Debian_Container). Aber sie existieren nicht im Bild. Dies bedeutet, dass, wenn Sie diesen Behälter entfernen (Docker RM Debian_Container) und starten Sie einen neuen Container, Sie müssen ein Paket installieren Procps nochmal. Wenn Sie das Debian -Bild in einem anderen Host starten, müssen Sie auch installieren Procps nochmal. Wir werden später sehen, wie das Bild mit Festplattenmodifikationen bestehen kann. Wenn Sie also beim nächsten Start eines Containers starten, wird die gesamte Software installiert.

Lassen Sie uns jetzt Apache und PHP installieren lassen. Der folgende Befehl dauert lange, um alle Abhängigkeitspakete, einschließlich Apache und PHP, herunterzuladen und zu installieren. Es dauert einige Minuten. Starten Sie am Ende Apache und greifen Sie in Port 8000 in Ihrem Webbrowser auf Localhost zu und greifen Sie zuhttp: // localhost: 8000). Sie werden die Standard -Debian -Seite für Apache sehen.

# APT Installieren Sie libapache2-mod-php # Service Apache2 Start 
Kopieren

Apache Debian Standardseite.

Bestätigen wir nun, dass PHP da ist. Sie können entweder zu gehen /var/ww/html Innerhalb des Containers oder beenden Sie die Containerhülle und geben /var/www/html im Behälter?)

$ echo "> phpinfo.Php 

Und voilà (http: // localhost: 8000/phpinfo.Php).

PHP -Informationen.

Sich zu einem Bild verpflichten

Wie bereits erwähnt, bestehen die Änderungen am Container an, solange der Container fortbesteht, und es wird erwartet. Dauerhafte Modifikationen sollten zu Bildern gemacht werden.

Der nächste Artikel zeigt, wie Sie ein angepasendes Bild auf elegante (und stark empfohlene) Weise erstellen, indem Sie eine Dockerfile verwenden. Im Moment lernen Sie einen Hack, der in bestimmten Situationen hilfreich sein kann, in denen es nicht möglich oder wünschenswert ist, eine Dockerfile zu schreiben. Erweitern Sie Bilder mit einer Docker -Datei, wenn sie bevorzugt werden, da sie leicht bearbeitet werden kann, während der Containerstatus für ein neues Bild verfolgt wird.

Der Befehl Docker Commit hat zwei Parameter: Containername Und neuer Bildname und es erstellt ein neues Bild auf dem lokalen Bilder -Cache basierend auf dem Container. Im Befehl unten, Debian_Container ist der Container Name und Debian-Apache-Php ist der neue Bildname.

$ Docker Commit Debian_Container Debian-Apache-Php SHA256: 3F01C0C71539C4DC6DFD7483FF68C41143B7E9AEB52DE4A9892C8CC136EDA236 
Kopieren

Bilder im Host -Cache auflisten.

$ docker bilder repository Tag Bild-ID Erstellt Größe Debian-Apache-Php Neueste 3F01C0C71539 Vor 10 Minuten 
Kopieren

Beachten Sie, dass Ihr Host ein neues Bild hat. Ein interessantes Merkmal von Image und Containermanagement ist, dass Docker nur den Unterschied des Festplattenzustands zwischen dem aktuellen Bild und dem Bild speichert, auf dem es basiert. Daher wird kein redundanter Speicherplatz verschwendet. Dafür verwendet Docker ein geschichteter Dateisystem, das den Ansatz des Kopierschreibens verwendet: Wenn ein neuer Container erstellt wird, erbt er dieselbe Festplatte des Bildes und, wie Änderungen an Dateien vorgenommen werden, werden sie in einer neuen Ebene geschrieben.



Behälter inspizieren

Docker unterhält viele Informationen zu Docker -Objekten. Der Befehl Docker inspizieren wird verwendet, um sie anzusehen.

$ docker inspizieren debian_container 

Der Befehl ruft ein JSON -Objekt mit zehn Zeilen ab, in denen der Status der Container festgelegt ist: Container -ID, erstelltes Datum, Status, Bild, Protokollpfad, Ports, Bände, Netzwerke usw.

Beschneidungsbehälter und Bilder

Nachdem Sie mit Behältern und Bildern herumgespielt haben, füllt sich die Scheibe des Hosts schließlich mit verlassenen Wesenheiten, die gelöscht werden müssen, damit Sie den Speicherplatz zurückerhalten können.

Der Befehl Docker -Containerbein Entfernen Sie alle Stoppbehälter. Seien Sie vorsichtig: Sobald der Behälter entfernt ist, geht jeder zugehörige Zustand verloren. Nehmen Sie eine Sicherung vor oder begehen Sie Änderungen an einem Bild vorher.

Der Befehl Docker -Bildbetrieb löscht alle nicht verwendeten Bilder. Wir haben noch keine Bilder erstellt, aber dieser Befehl wird im nächsten Artikel nützlich sein.

Abschluss

In diesem Artikel haben Sie gelernt, mit Containern zu interagieren und Änderungen an Bildern zu begehen, obwohl dieser Ansatz nicht empfohlen wird.

Im nächsten Artikel erstellen Sie Ihre eigenen Bilder mit Dockerfile, die empfohlene Möglichkeit zum Anpassen von Docker -Bildern.

Mehr in dieser Docker -Artikelserie

  • Eine praktische Einführung in Docker-Container
  • So stellen Sie Docker -Bilder mit Dockerfiles an

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • So erstellen Sie einen Docker -basierten Lampenstapel mit Docker auf…
  • Linux Apache, die PHP -Dateien nicht ausführen: Lösung
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • OpenLiteSpeed ​​WordPress Installation
  • So installieren Sie PHP unter Ubuntu Linux
  • Ampache Raspberry Pi Installation