Wie öffne ich mehrere Terminals im Docker?


Antworten:


143

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):

  1. Öffnen Sie ein Docker-Terminal

  2. 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
  3. Per @ eltonStonemans Rat: docker exec -it <container_id> bash

    • Jetzt zeigt Ihr Docker-Terminal dem Container ein interaktives Terminal an.
  4. Ö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)


2
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 .


1

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.


8
Er hatte ein Problem, jetzt hat er zwei. (Kitematic ausführen und dann ein neues Terminal öffnen)
SparK

@ ParK in der Tat. Kitematic ist jetzt Vermächtnis
VladoDemcak

0

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:

  • Host ist Windows 10. 1803
  • Bild ist Ubuntu Xenial
  • Docker Engine ist 18.03.1-ce
  • Docker Compose ist 1.21.1
  • Windows Xming X Server ist 7.7.0.25 - unter Verwendung der IPv4-Schnittstelle 192.168.1.101

Dockerfile: Dockerfile-dev-ubuntu_xenial - erstellt das Docker-Image

FROM ubuntu:xenial
ARG DEBIAN_FRONTEND=noninteractive
LABEL maintainer "Your NAME <your.address@yourmailhost.com>"
RUN apt-get update ; apt-get install -y apt-utils desktop-file-utils dialog nautilus build-essential debhelper fakeroot ccache lsb-release
RUN apt-get install -y autotools-dev autoconf pkg-config libtool curl gedit git wget unzip lintian
RUN apt-get install -y qtcreator valgrind
RUN apt-get install -y sudo \
    && groupadd -r user -g 1000 \
    && useradd -u 1000 -r -g user -m -d /user -s /sbin/nologin -c "Build pkg user" user \
    && chmod 755 /user \
    && echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user \
    && chmod 0440 /etc/sudoers.d/user
WORKDIR /user
USER user
VOLUME ["/buildpkg", "/user/projects", "/user/resources"]
CMD /bin/bash

Compose.yml: compose-dev-linux.yml

version: '3'
services:
  # Commands:
  #   Build: docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
  #   Up   : docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
  #   Run  : docker-compose -f compose-dev-linux.yml run dev_ubuntu_xenial
  #   Down : docker-compose -f compose-dev-linux.yml down
  # Host folders:
  #   %USERPROFILE%/Projects
  #   %USERPROFILE%/Projects/Docker-builds
  #   %USERPROFILE%/Projects/Docker-resources
  # Docker configuration file locations:
  #   %USERPROFILE%/Dockerfiles/Dockerfile-dev-ubuntu_xenial
  #   %USERPROFILE%/compose-dev-linux.yml
  dev_ubuntu_xenial:
    security_opt:
      - seccomp:unconfined
    cap_add:
      - SYS_ADMIN
    environment:
      - DISPLAY=192.168.1.101:0
    network_mode: host
    image: "application-dev-platform/application:ubuntu_xenial"
    container_name: application-dev-ubuntu_xenial
    command: bash -c "/bin/bash"
    tty: true
    build:
      context: ./Dockerfiles
      dockerfile: Dockerfile-dev-ubuntu_xenial
    volumes:
      - ./Projects:/user/projects
      - ./Projects/Docker-builds:/buildpkg
      - ./Projects/Docker-resources:/user/resources

Ausführen: - anfängliches Powershell-Terminal

  1. Bild erstellen: docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
  2. Starten Sie Docker getrennt: docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
  3. Listencontainer: docker ps
  4. Container starten: docker exec -it <CONTAINER ID> bash
  5. Starten Sie qtCreator: user@linuxkit-<generatedid>:~$ qtcreator

Führen Sie Folgendes aus : - Neues Powershell-Terminal

  1. Container starten: docker exec -it <CONTAINER ID> bash
  2. Nautilus starten: nautilus

Führen Sie Folgendes aus : - Neues Powershell-Terminal

  1. Container starten: docker exec -it <CONTAINER ID> bash
  2. Terminal starten: user@linuxkit-<generatedid>:~$

0

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.