GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So führen Sie einen Befehl in einem laufenden Docker-Container aus

Normalerweise möchten Sie, dass Docker-Anwendungen vollständig enthalten sind, aber manchmal ist es für Entwicklungs- oder Automatisierungszwecke nützlich, mit Docker-Containern arbeiten zu können, als ob es Linux-VMs gäbe. Docker bietet Tools zum Ausführen von Befehlen und sogar ganzen Shells in Containern.

Befehle in Containern ausführen

Um einen Befehl in einem Container auszuführen, benötigen Sie seine Container-ID, es sei denn, Sie haben einen bestimmten Namen für diesen Container eingerichtet. Dies ist eine lange Hex-Zeichenfolge, die Sie der Docker-Prozessliste entnehmen können:

docker ps

Dann können Sie exec -it verwenden Befehl, der im Container ausgeführt werden soll. Betrachten Sie beispielsweise die Ausgabe einer Protokolldatei:

docker exec -it containerID tail /var/log/nginx/access.log

Sie können Skripte auch innerhalb von Containern ausführen:

docker exec -it containerID script.sh

Das -it Flags sind für den „interaktiven Modus“ bzw. TTY und werden fast immer verwendet. Es gibt noch ein paar andere Flags, die Sie verwenden können:

  • --workdir oder -w ändert das aktuelle Verzeichnis vor dem Befehl.
  • --detach , oder -d , führt den Befehl im Hintergrund aus.
  • --env , oder -e , setzt Umgebungsvariablen vor der Ausführung.
  • --env-file tut dasselbe, ist aber sicherer für den Umgang mit Geheimnissen.
  • --privileged führt den Befehl mit erweiterten Berechtigungen aus.
  • --user läuft unter einem anderen Benutzer

Dies funktioniert natürlich nur auf einem laufenden Container. Wenn Sie einen Container zu Wartungszwecken anhalten möchten, müssen Sie entweder Updates über eine neue Image-Version bereitstellen oder Änderungen an den auf Volumes bereitgestellten Daten vom Host-Betriebssystem vornehmen.

SSHing in einen Container

Sie sind nicht auf einfache Befehle beschränkt, Sie können tatsächlich eine Shell öffnen, indem Sie /bin/bash ausführen als Befehl. Möglicherweise sind Sie bei den verfügbaren Tools eingeschränkt – die meisten Container verfügen über eine ziemlich einfache Linux-Installation – aber es macht die Ausführung vieler Befehle viel einfacher.

docker exec -it containerID /bin/bash

Dies ist einfach eine vom Host aus zugängliche Shell, die in den meisten Fällen gut funktioniert. Aber wenn Sie möchten, können Sie Ihre Container so einrichten, dass sie wie ein VPS vollständig über SSH verfügbar sind. Weitere Informationen zum Einrichten finden Sie in unserem Leitfaden zum Ausführen eines SSH-Dienstes in einem Docker-Container.

VERBUNDEN: SSH in einen Docker-Container

Kopieren von Dateien in und aus Containern

Ausführen von Befehlen mit exec -it funktioniert, aber es gibt immer noch eine Schicht zwischen dem Host und dem Container, die ein einfaches Skripting verhindert. Zum einen ist es zwar einfach, Befehle an einen Container zu senden, aber es ist schwieriger, eine Ausgabe aus dem Dateisystem herauszuholen.

Während Sie das STDOUT von exec -it weiterleiten können zu anderen Diensten auf dem Host-Betriebssystem können Sie auch Dateien in das und aus dem Dateisystem des Containers kopieren. Ziehen Sie beispielsweise eine Protokolldatei heraus und fügen Sie sie auf dem Host ein:

docker cp container:/var/log/nginx/example.log example.log

Oder ganze Verzeichnisse herausziehen:

docker cp nginx:/etc/nginx/ nginxconfig/

Wenn Sie dies jedoch regelmäßig tun, sollten Sie die Verwendung einer Bindung oder eines Volume-Mounts in Betracht ziehen, um die Daten direkt vom Host aus zugänglich zu machen.

VERBUNDEN: So verwenden Sie Docker Cp zum Kopieren von Dateien zwischen Host und Containern


Docker
  1. Wie führe ich einen Befehl in einem laufenden Systemd-Container aus?

  2. Wie führe ich ein Programm in einem Docker-Container aus?

  3. So führen Sie MySQL in einem Docker-Container aus

  4. Wie man SSH in einen Docker-Container einfügt

  5. Wie sende ich ein Signal an das Programm, das in einem Docker-Container ausgeführt wird?

So führen Sie eine .NET-App in Docker aus

So überprüfen Sie, ob der Docker-Daemon oder ein Container ausgeführt wird

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So erstellen Sie ein Docker-Image aus einem laufenden Container

So führen Sie Docker-Container aus