Verwalten und Überwachen von Docker-Containern mit dry unter Ubuntu 16.04

Einführung

image: https: //i.imgur.com/5uQQNAa.gif [trockenes Überwachungs-GIF]

dry ist eine einfache, aber umfangreiche Terminalanwendung, die für die Interaktion mit https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction- entwickelt wurde. to-common-components [Docker] -Container und deren Images. Bei Verwendung von dry entfällt die Wiederholung bei der Ausführung von Routinebefehlen Docker Engine und auch Bietet eine visuellere Alternative zur nativen Docker-CLI.

dry bietet die Möglichkeit, Container schnell zu starten und zu stoppen, Docker-Images sicher oder gewaltsam zu entfernen, Containerprozesse in Echtzeit fortlaufend zu überwachen und auf die Ausgaben von Docker zuzugreifen: "+ info ", " inspect ", " history +" und " + log + `Befehle.

Die meisten Befehle, die über die offizielle Docker Engine-CLI ausgeführt werden können, sind in trockener Form leichter verfügbar und haben dasselbe Verhalten und dieselben Ergebnisse. dry verfügt außerdem über die Docker Swarm-Funktionalität und bietet einen Ausgang zum Überwachen und Verwalten von Container-Setups mit mehreren Hosts.

In diesem Tutorial werden wir trocken installieren und einige der nützlichsten Funktionen untersuchen:

  • Interaktion mit Docker-Containern, Bildern und Netzwerken

  • Überwachen von Docker-Containern und

  • Optional können Sie mit Docker Swarm-Knoten und -Diensten interagieren.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Schritt 1 - Trocken einbauen

Zuerst müssen wir trocken auf dem Docker-Server installieren. Die neueste Version der Dry-Binaries finden Sie unter dry’s GitHub release page.

Laden Sie die neueste Version der Binärdatei + dry-linux-amd64 + herunter, die zum Zeitpunkt der Veröffentlichung + v0.9-beta.3 + ist.

wget https://github.com/moncho/dry/releases/download//dry-linux-amd64

Verschieben Sie die neue Binärdatei und benennen Sie sie von "+ dry-linux-amd64 " in " / usr / local / bin / dry +" um.

sudo mv dry-linux-amd64 /usr/local/bin/dry

"+ / usr / local / bin " ist der Standardspeicherort für Binärdateien für Programme, die lokal auf einem Server gespeichert sind. Wenn Sie die Binärdatei dry in dieses Verzeichnis verschieben, können Sie dry auch über die Befehlszeile von einem beliebigen Ort auf dem Server aufrufen, da dieses Verzeichnis in der Shell unter https://www.digitalocean.com/community/tutorials/how-to- enthalten ist. read-and-set-environment-and-shell-variables-on-a-linux-vps [` $ PATH +` umgebungsvariable].

Ändern Sie die binären Berechtigungen mit + chmod, damit Sie sie ausführen können.

sudo chmod 755 /usr/local/bin/dry

Sie können testen, ob "+ dry " jetzt verfügbar ist und ordnungsgemäß funktioniert, indem Sie das Programm mit der Option " -v +" ausführen.

dry -v

Dies gibt die Versionsnummer und Build-Details zurück:

Version Details Outputdry version 0.9-beta.2, build d4d7a789

Nun, da das Trocknen eingerichtet ist, können Sie es verwenden.

Schritt 2 - Interaktion mit Docker Containers

Lassen Sie es trocken laufen, um das Dashboard in Ihrem Terminal anzuzeigen.

dry

Am oberen Rand des Dashboards befinden sich Informationen zum Server und zur Docker-Software, z. B. die Docker-Version, die Docker Engine-API-Version, ob der Server ein Docker Swarm-fähiger Worker / Manager-Knoten ist, sowie der Hostname und die Ressourcen des Servers.

Am unteren Rand des Dashboards finden Sie eine Referenz für die Navigationstasten, mit denen Sie auf verschiedene Teile von dry zugreifen können:

Navigation key options[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter |
[m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands

Dieses Dashboard selbst enthält standardmäßig die Auflistung "+ Container +", wenn Sie zum ersten Mal trocken starten. In dieser Ansicht können Sie den allgemeinen Status der Container Ihres Hosts anzeigen.

Wenn Sie den Beispielcontainer-Stack von Wordpress, MariaDB und PHPMyAdmin aus den vorausgesetzten Lernprogrammen verwenden, werden die drei neu erstellten Container aufgelistet:

image: https: //i.imgur.com/Wjd4PWh.png [trockenes Dashboard-Bild]

Verwenden Sie die Aufwärts- und Abwärtspfeile auf Ihrer Tastatur, um den Wordpress-Container auszuwählen, und drücken Sie dann "+ ENTER +".

Daraufhin werden oben auf dem Bildschirm einige Informationen zum Container angezeigt, z. B. die Portzuordnung, die Netzwerkverbindungen und die IP-Adresse des Netzwerkcontainers:

Wordpress Container Statistics  Container Name:  wordpress_wordpress_1                    ID:       f67f9914b57e       Status:  Up 13 minutes
 Image:           wordpress                                Created:  About an hour ago
 Command:         docker-entrypoint.sh apache2-foreground
 Port mapping:    0.0.0.0:8080->80/tcp
 Network Name:    bridge
 IP Address:     172.17.0.3
 Labels           6

Wenn Sie einen Container auswählen, wird in der unteren Mitte des Bildschirms auch eine neue Liste der auswählbaren Optionen angezeigt:

  • + Fetch logs +, entspricht dem Docker Engine-Befehl `+docker logs + `. Dies ist nützlich, um Fehler in Containern zu debuggen und zu beheben.

  • + Kill container +, das Sie verwenden können, wenn ein Container nicht mehr reagiert und nicht wie gewünscht beendet wird.

  • + Container entfernen in, mit dem Sie nicht benötigte Container sauber entfernen können.

  • + Inspect container +, das entspricht `+docker container inspect + `.

  • + Restart +, wodurch ein Container angehalten und neu gestartet wird. viel schneller als das Eingeben der Docker Engine-Befehle zum Neustart oder https://docs.docker.com/engine/reference/commandline/ps/ [den Status abfragen] eines Containers.

  • + Bildverlauf anzeigen +, der die Befehle auflistet, die zum Erstellen des Bilds des Containers verwendet wurden. Diese „Ebenen“ werden während des Image-Erstellungsprozesses generiert und resultieren aus Befehlen / Aktionen, die in einer https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of- bereitgestellt werden. images [Dockerfile]. Mit dieser Option können wir sehen, wie genau der Container mit dem Basis-Docker-Image generiert wurde.

  • + Stats + Top +, einschließlich Informationen zur CPU-Auslastung, zum Speicherverbrauch, zum ein- und ausgehenden Netzwerkverkehr, zum Dateisystembetrieb, zur Gesamtprozess-ID und zur Gesamtverfügbarkeit des Containers. Es enthält auch eine Prozessliste, die funktional mit der Ausgabe von `top identisch ist `.

  • + Stop + stoppt einen Container. Sie können "+ F2 " verwenden, um die Container in der Ansicht " Container " umzuschalten, um " aktuell gestoppt und aktiv " einzuschließen, und Sie können einen gestoppten Container mit der Option " Neustart +" neu starten, nachdem Sie ihn ausgewählt haben.

Drücken Sie die Taste "+ ESC", um zum Stammabschnitt "+ Container" des Dashboards zurückzukehren. Von hier aus schauen wir uns den Abschnitt "+ Bilder" an.

Schritt 3 - Interaktion mit Docker-Bildern

Drücken Sie im Bereich "+ Container " auf " 2 ", um auf den Bereich " Bilder +" von dry zuzugreifen.

image: https: //i.imgur.com/18pFgHi.png [Bildersektion]

Dieser Abschnitt bietet einen einfacheren Zugriff auf den Befehl `+docker image inspect + `. Auch hier hat dry einige praktische Tastaturkürzel, die Sie in der Navigationsleiste sehen können:

  • + STRG + D + für + Dangling entfernen +, "Dangling-Volumes" bezieht sich auf andere Containervolumes, auf die von keinem Container mehr verwiesen wird und die dadurch redundant sind. Normalerweise beinhaltet diese Operation in Docker auf der Befehlszeile den Befehl "+ docker volume rm " und das Flag " dangling = true +" sowie die Zieldatenvolumes.

  • Mit der Tastenkombination "+ STRG + E " für " Entfernen +" (entspricht "https://docs.docker.com/engine/reference/commandline/rmi/[`+docker rmi +") können Sie Bilder so lange entfernen, wie dies der Fall ist Es sind noch keine aus diesem Image erstellten Container aktiv und werden ausgeführt.

  • + STRG + F + für + Entfernen erzwingen +, mit dem Sie das markierte Bild wie mit + docker rmi --force + zwangsweise entfernen können.

  • + I + für + History +, das die gleichen Daten anzeigt wie + Show Image History im Abschnitt` + Container`.

Bisher haben wir die Behälter und Bildabschnitte von trocken gesehen. Der letzte Abschnitt, der untersucht werden muss, sind Netzwerke.

Schritt 4 - Interaktion mit Docker-Netzwerken

Drücken Sie im Bereich "+ Bilder " die Taste " 3 ", um auf den Bereich " Netzwerke +" zuzugreifen.

image: https: //i.imgur.com/rR874kM.png [Docker Networks Dashboard]

Dieser Abschnitt ist ideal für die überprüfung von Netzwerkverbindungen und der Netzwerkkonfiguration von Docker-Containern.

Sie können delete a network from Docker mit STRG + E + löschen, vordefinierte Docker-Standardnetzwerke wie + bridge + können jedoch nicht entfernt werden . Als Beispiel können Sie jedoch versuchen, "+ bridge " zu löschen, indem Sie es mit den Pfeiltasten auswählen und " ENTER +" drücken. Sie sehen eine lange Ausgabe wie diese:

Output. . .
   "Containers": {
       "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": {
           "Name": "wordpress_wordpress_db_1",
           "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5",
           "MacAddress": "02:42:ac:11:00:02",
           "IPv4Address": "172.17.0.2/16",
           "IPv6Address": ""
       },
       "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": {
           "Name": "wordpress_wordpress_1",
           "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16",
           "MacAddress": "02:42:ac:11:00:04",
           "IPv4Address": "172.17.0.4/16",
           "IPv6Address": ""
       },
       "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": {
           "Name": "wordpress_phpmyadmin_1",
           "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78",
           "MacAddress": "02:42:ac:11:00:03",
           "IPv4Address": "172.17.0.3/16",
           "IPv6Address": ""
       }
   },
. . .

Der Teil der Ausgabe oben zeigt die Netzwerk-IP-Adressen und MAC-Adressen der Containerverbindungen und des Container-+ Bridge + -Netzwerks. Hiermit können Sie überprüfen, ob alle Container Mitglieder des "+ bridge" -Netzwerks sind und kommunizieren können. Dies ist ein grundlegender Hinweis darauf, dass das Containernetzwerk gültig ist.

Mit + ESC + schließen Sie die Netzwerkausgabe. Nachdem wir uns nun die Bereiche "+ Container ", " Bilder " und " Netzwerke +" angesehen haben, gehen wir zu den Überwachungsfunktionen von dry über.

Schritt 5 - Überwachung der Docker-Container

Drücken Sie die Taste "+ M ", um einen kurzen Überblick über alle ausgeführten Container auf dem aktuellen Server / Host zu erhalten. Auf diesen Bildschirm kann von jedem der Stammbereiche von dry aus zugegriffen werden, z. B. von ` Containers `, ` Images ` und ` Networks +`.

image: https: //i.imgur.com/L7cEJ1L.png [Monitor Mode Image]

Teile dieser Informationen werden an anderer Stelle im Programm aufgelistet (z. B. in den Containeroptionen "+ Stats + Top +"). Diese Ansicht bietet jedoch einen zentralen Ort für Informationen zu allen Containern, sodass Sie den gesamten Stapel überwachen können. Dies ist nützlich, wenn Sie größere Mengen von Containern verwalten.

Drücken Sie + Q +, um das Dashboard zu verlassen. Ab hier richten wir uns trocken mit Docker Swarm ein.

Schritt 6 - Dry auf dem Docker Swarm Cluster Manager installieren (optional)

Von Ihrem lokalen Computer aus können Sie den Benutzer "+ docker-machine" zu SSH in Ihren angegebenen Cluster-Manager-Knoten übertragen. Im vorausgesetzten Tutorial für Docker Swarm wurde dies als "+ node-1 +" festgelegt.

docker-machine ssh node-1

Um eine andere Methode für die Trockeninstallation zu demonstrieren, rufen Sie das offizielle Installationsskript mit "+ curl " auf und führen Sie es aus. Wenn Sie es vorziehen, das "" zu vermeiden …​ | sh + `Muster können Sie trocken wie in Schritt 1 installieren.

curl -sSf https://moncho.github.io/dry/dryup.sh | sh

Das Installationsskript verschiebt die trockene Binärdatei automatisch nach "+ / usr / local / bin":

Outputdryup: Moving dry binary to its destination
dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'

Aktualisieren Sie die Berechtigungen für die Binärdatei wie in Schritt 1.

sudo chmod 755 /usr/local/bin/dry

Versuchen Sie jetzt, trocken zu laufen.

dry

Oben rechts im anfänglichen Abschnitt "+ Container " werden jetzt die Statuszeilen " Schwarm " und " Knotenrolle +" angezeigt, die in früheren Schritten leer waren:

OutputSwarm:      active
Node role:  manager
Nodes:      3

Außerdem werden zwei Container mit langen Bildnamen angezeigt. Die anderen drei Container sind auf die anderen Swarm-Worker-Knoten verteilt und wurden vom Beispielservice "+ webserver +" aus dem vorausgesetzten Lernprogramm definiert.

Die Trockeninstallation des Cluster-Managers ist fertig. Sehen wir uns als Nächstes an, wie trocken die Installation mit Docker Swarm funktioniert.

Schritt 7 - Interaktion mit Docker-Schwarmknoten (optional)

Drücken Sie im Abschnitt "+ Container " die Taste " 4 ", um zum Abschnitt " Knoten +" zu navigieren.

image: https: //i.imgur.com/9q4uXRr.png [Abschnitt für Dashboard-Knoten]

In diesem Abschnitt werden einige nützliche Metriken für jeden Knoten angezeigt, z. B. seine Rolle (Manager oder Arbeit), Status und Verfügbarkeit. In der Zeile oben im Bildschirm werden Informationen zum Ressourcenverbrauch angezeigt.

Wählen Sie von hier aus mit den Pfeiltasten "+ node-2 " aus und drücken Sie " ENTER". Dadurch werden die Aufgaben des einzelnen Knotens aufgerufen:

image: https: //i.imgur.com/lZeJ9pN.png [Node-2-Aufgaben-Dashboard]

In Bezug auf den Webserver-Dienst enthält Node-2 den ersten und den zweiten der fünf vernetzten Container. Die Aufgaben in dieser Ansicht zeigen, dass der "+ CURRENT STATE" der beiden Container aktiv ist und wie lange sie ausgeführt wurden. Die Nummerierung Ihrer eigenen Containernamen kann hier variieren. Dies hängt davon ab, welchem ​​Arbeitsknoten die Container zugeordnet sind. Dies wird durch den Befehl des Docker-Dienstes bestimmt.

Kehren Sie zum Abschnitt "+ Nodes " zurück, indem Sie " ESC +" drücken, damit wir hier einige Tastenkombinationen von Dry untersuchen können.

Eine häufige Aufgabe bei der Verwendung von Docker Swarm besteht darin, den Status oder die Verfügbarkeit bestimmter Knoten zu ändern. Markieren Sie erneut "+ node-1 " und drücken Sie " CTRL + A ", um die Eingabeaufforderung " Set Availability +" anzuzeigen.

OutputChanging node availability, please type one of ('active'|'pause'|'drain')

Geben Sie "+ drain " ein und bestätigen Sie mit " ENTER +".

Die Drain-Option verhindert, dass ein Knoten neue Anweisungen vom Swarm-Cluster-Manager erhält, und wird normalerweise für geplante Wartungen verwendet. Drain verwenden bedeutet auch, dass der Knotenmanager eine Replik auf einem separaten Knoten startet, der auf aktive Verfügbarkeit eingestellt ist, wodurch die vorübergehende Ausfallzeit des ausgelassenen Knotens ausgeglichen wird.

Wenn Sie den Befehl "+ drain +" absenden, bestätigt die Statusmeldung oben links die Aktion:

In der Statusmeldung oben links sehen Sie eine Bestätigung dieser Aktion. Diese Änderung spiegelt sich auch in der Spalte "+ VERFÜGBARKEIT +" wider:

OutputNode  availability is now drain

Sie werden auch die Änderung bemerken, die sich in der Spalte "+ VERFÜGBARKEIT +" widerspiegelt.

Um + node-2 + wieder herzustellen, markieren Sie es erneut und drücken Sie + CTRL + A +, um die Eingabeaufforderung + Set Availability + zurückzusetzen. Geben Sie diesmal "+ active " ein und drücken Sie " ENTER".

Für diese Aktion wird ebenfalls eine Bestätigungsnachricht angezeigt:

OutputDocker daemon: update  availability is now active

Die Option "+ Pause ", die wir nicht verwendet haben, hält vorübergehend alle Prozesse in jedem im Knoten gefundenen Container an, bis sie wieder auf " aktiv +" gesetzt werden.

Im letzten Schritt werden wir trocken mit Docker Swarm-Diensten interagieren.

Schritt 8 - Interaktion mit Docker Swarm Services (optional)

Drücken Sie + 5 +, um den Bereich + Services von dry anzuzeigen.

image: https: //i.imgur.com/c7DMszC.png [Abschnitt Dashboard Services]

Das vorausgesetzte Lernprogramm hat nur einen Dienst eingerichtet, "+ webserver ", der zum Replizieren von Instanzen (d. H. neue Container anlegen) bei Bedarf bis maximal fünf. Diese Ansicht bestätigt, dass " 5/5 +" - Replikate aktiv sind, und zeigt die vom Dienst verwendete Portzuordnung sowie die verteilten Tasks an.

Wir können trocken verwenden, um viel mehr Details über den Service zu sehen. Drücken Sie + ENTER +, wenn der Dienst + webserver + markiert ist.

image: https: //i.imgur.com/Vob3wMS.png [Dashboard-Webserver-Aufgabenübersicht]

Diese detaillierte Dienstansicht enthält viele Informationen zum Status des Dienstes und seiner Schwarmknoten.

Interessanterweise werden Sie feststellen, dass hier sieben Aufgaben aufgeführt sind, obwohl der Dienst auf fünf festgelegt ist. Dies liegt daran, dass Docker Swarm aus dem Test in Schritt 7 zwei zusätzliche Replikat-Tasks erstellt hat, als wir "+ node-2 +" in den Drain-Modus versetzten.

Wir können auch trocken verwenden, um die maximale Anzahl von Replikaten zu erhöhen. Drücken Sie "+ ESC ", um zum Abschnitt " Services " zurückzukehren, und geben Sie " CTRL + S " ein, während Sie den " Webserver +" - Dienst markieren. Dadurch wird die Skalierungsaufforderung aufgerufen:

OutputScale service. Number of replicas?

In diesem Zusammenhang wäre eine Skalierung dieses Dienstes hilfreich, um den Bedarf an zusätzlichen Ressourcen aufgrund des wachsenden Webverkehrs zu decken. Erhöhen Sie die Anzahl der Replikate auf 8, indem Sie an der Eingabeaufforderung "+ 8 " eingeben und " ENTER +" drücken.

Suchen Sie nach dieser Bestätigungsmeldung, um die Aktion zu bestätigen:

OutputDocker daemon: update v6gbc1ms0pi scaled to 8 replicas

Sie können jetzt die + Services + Ansichtslisten + 8/8 + Replikate für den Service sehen.

Wenn Sie einen Dienst vollständig entfernen möchten, markieren Sie ihn und drücken Sie "+ STRG + R +", um die Eingabeaufforderung zum Entfernen des Dienstes aufzurufen:

OutputAbout to remove the selected service. Do you want to proceed? y/N

Sie können dies verwenden, um den "+ Webserver +" - Dienst zu entfernen, wenn Sie ihn nicht mehr benötigen oder ausführen möchten.

Drücken Sie abschließend "+ Q +", um das Dashboard zu verlassen und das Programm zu beenden.

Fazit

Wenn Sie diesem Lernprogramm folgen, müssen Sie ein trockenes Setup auf einem Docker-Host und einem Docker Swarm-Cluster-Manager durchführen. In diesem Lernprogramm wurden auch die wichtigsten Funktionen von dry behandelt, z. B. die Interaktion mit Docker-Containern, Bildern und Netzwerken sowie mit Docker Swarm-Knoten und -Diensten.

Es gibt eine sekundäre Methode, um eine Verbindung zu einem Remote-Host herzustellen, auf dem Docker ausgeführt wird. Dabei wird die Option "+ -H +" mit der IP-Adresse des Remote-Hosts verwendet, wenn die Verbindung trocken ausgeführt wird. Dies ist in Situationen nützlich, in denen Sie nicht in der Lage oder nicht interessiert sind, die Binärdatei zu installieren.

Versuchen Sie von hier aus, trocken auf Ihre eigenen Docker-Setups anzuwenden, um herauszufinden, wie Sie Ihren Workflow optimieren können. Sie können die zusätzlichen Tastenkombinationen von dry unter the GitHub README nachlesen.