Ich muss zwei unterschiedliche Prozesse auf einem Docker-Container starten, für den zwei Terminals erforderlich sind. Wie kann dies am besten erreicht werden?
Sie können docker exec -it <container> bashvon mehreren Terminals aus ausführen , um mehrere Sitzungen zu starten, die mit demselben Container verbunden sind.
Danke für die tolle Antwort. Was ist, wenn ich jetzt eines der vorherigen interaktiven Terminals öffnen möchte, die ich gestartet und im Hintergrund laufen gelassen habe, und es beenden möchte? Wenn Sie Docker ps verwenden, wird nur der Container angezeigt. Wenn ich jedoch ps aux in einem der Terminals ausführe, werden alle von mir gestarteten Terminals angezeigt.
Matteo
24
Um die großartige Antwort von @eltonStoneman zu erweitern (Für all diese neuen Docker-Leute wie mich):
Öffnen Sie ein Docker-Terminal
Lassen Sie das Bild als Container im Hintergrund laufen: docker run -d -it <image_id>
Tipp: Zeigt die container_id an, die Sie gerade von diesem Bild aus gestartet haben.docker ps
Per @ eltonStonemans Rat: docker exec -it <container_id> bash
Jetzt zeigt Ihr Docker-Terminal dem Container ein interaktives Terminal an.
Öffnen Sie ein anderes Docker-Terminal und führen Sie Schritt 3 aus, um ein weiteres interaktives Terminal für den Container zu erstellen. (Spülen und wiederholen)
Danke, besonders für das docker psbisschen. Übrigens, zumindest unter Linux, ist ein normales Terminal in Ordnung (muss kein "Docker-Terminal" sein)
Darren Cook
Danke für die tolle Antwort. Was ist, wenn ich jetzt eines der vorherigen interaktiven Terminals öffnen möchte, die ich gestartet und im Hintergrund laufen gelassen habe, und es beenden möchte? Wenn Sie Docker ps verwenden, wird nur der Container angezeigt. Wenn ich jedoch ps auxin einem der Terminals ausgeführt werde, werden alle von mir gestarteten Terminals angezeigt.
Matteo
5
docker run -it container_name bashstartet einen neuen Container mit bash promt.
docker exec -it container_name bashtritt der bereits ausgeführten Bash-Eingabeaufforderung des Containers bei .
Holen Sie sich zuerst den Namen des Containers und führen Sie
docker container ls
dann den Befehl docker exec aus, um in diesen Container zu gelangen
docker exec <container_id> bash
Antworten:
Sie können
docker exec -it <container> bash
von mehreren Terminals aus ausführen , um mehrere Sitzungen zu starten, die mit demselben Container verbunden sind.quelle
Um die großartige Antwort von @eltonStoneman zu erweitern (Für all diese neuen Docker-Leute wie mich):
Öffnen Sie ein Docker-Terminal
Lassen Sie das Bild als Container im Hintergrund laufen:
docker run -d -it <image_id>
docker ps
Per @ eltonStonemans Rat:
docker exec -it <container_id> bash
Öffnen Sie ein anderes Docker-Terminal und führen Sie Schritt 3 aus, um ein weiteres interaktives Terminal für den Container zu erstellen. (Spülen und wiederholen)
quelle
docker ps
bisschen. Übrigens, zumindest unter Linux, ist ein normales Terminal in Ordnung (muss kein "Docker-Terminal" sein)ps aux
in einem der Terminals ausgeführt werde, werden alle von mir gestarteten Terminals angezeigt.docker run -it container_name bash
startet einen neuen Container mit bash promt.docker exec -it container_name bash
tritt der bereits ausgeführten Bash-Eingabeaufforderung des Containers bei .quelle
Wenn Sie Kitematic ausführen können , können Sie auf die Schaltfläche exec klicken , um das Terminal im ausgewählten Container zu öffnen.
quelle
Verwenden von Docker Compose : Angenommen, Sie haben ein Compose-XML, das X-Windows aktiviert.
Sie können die folgenden Schritte ausführen, um Terminals für eine grafische IDE (z. B. qtCreator), Nautilus und ein Terminalfenster zu starten.
Annahmen:
Dockerfile: Dockerfile-dev-ubuntu_xenial - erstellt das Docker-Image
Compose.yml: compose-dev-linux.yml
Ausführen: - anfängliches Powershell-Terminal
docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
docker ps
docker exec -it <CONTAINER ID> bash
user@linuxkit-<generatedid>:~$ qtcreator
Führen Sie Folgendes aus : - Neues Powershell-Terminal
docker exec -it <CONTAINER ID> bash
nautilus
Führen Sie Folgendes aus : - Neues Powershell-Terminal
docker exec -it <CONTAINER ID> bash
user@linuxkit-<generatedid>:~$
quelle
Holen Sie sich zuerst den Namen des Containers und führen Sie
docker container ls
dann den Befehl docker exec aus, um in diesen Container zu gelangendocker exec <container_id> bash
quelle