Wie komme ich in die Shell eines Docker-Containers?
I'm immer begann die Arbeit mit Docker. I'm mit dem WordPress-Basis-Image und docker-compose.
Ich versuche, per SSH in einen der Container zu gelangen, um die Dateien/Verzeichnisse zu prüfen, die während des ersten Builds erstellt wurden. Ich habe versucht, docker-compose run containername ls -la
auszuführen, aber das hat nichts gebracht. Selbst wenn es funktioniert, hätte ich lieber eine Konsole, in der ich die Verzeichnisstruktur durchsuchen kann, als einen einzigen Befehl auszuführen. Was ist der richtige Weg, um dies mit Docker zu tun?
979
3
Mit
docker attach
können Sie sich mit Ihrem Docker-Container verbinden, aber das ist nicht wirklich dasselbe wiessh
. Wenn Ihr Container z.B. einen Webserver betreibt, wirddocker attach
Sie wahrscheinlich mit dem stdout des Webserverprozesses verbinden. Es wird Ihnen nicht unbedingt eine Shell geben.Der Befehl
docker exec
ist wahrscheinlich das, wonach Sie suchen; damit können Sie beliebige Befehle innerhalb eines bestehenden Containers ausführen. Zum Beispiel:Natürlich muss der Befehl, den Sie ausführen, im Dateisystem des Containers vorhanden sein.
In dem obigen Befehl ist `
der Name oder die ID des Zielcontainers. Es spielt keine Rolle, ob Sie
docker composeverwenden oder nicht; führen Sie einfach
docker ps` aus und verwenden Sie entweder die ID (eine hexadezimale Zeichenfolge, die in der ersten Spalte angezeigt wird) oder den Namen (der in der letzten Spalte angezeigt wird). Z.B.: gegeben:kann ich ausführen:
Ich könnte das Gleiche erreichen, indem ich ausführe:
Auf ähnliche Weise könnte ich eine Shell im Container starten;
docker exec" wird definitiv eine Lösung sein. Eine einfache Möglichkeit, mit der von Ihnen gestellten Frage zu arbeiten, ist das Mounten des Verzeichnisses innerhalb von Docker in das Verzeichnis des lokalen Systems.
So können Sie die Änderungen im lokalen Pfad sofort sehen.
Eine andere Möglichkeit ist die Verwendung von nsenter.