IT Share you

Docker에서 여러 터미널을 여는 방법은 무엇입니까?

shareyou 2020. 12. 10. 21:27
반응형

Docker에서 여러 터미널을 여는 방법은 무엇입니까?


두 개의 터미널이 필요한 도커 컨테이너에서 두 개의 개별 프로세스를 시작해야합니다.이를 달성하는 가장 좋은 방법은 무엇입니까?


당신은 실행할 수 있습니다 docker exec -it <container> bash동일한 컨테이너에 연결된 여러 세션을 시작하기 위해 여러 단말기에서.


@eltonStoneman 의 훌륭한 답변 을 확장하려면 (나와 같은 모든 새로운 도커 사람들에게) :

  1. 도커 터미널 열기

  2. 백그라운드에서 컨테이너로 실행되는 이미지를 가져옵니다. docker run -d -it <image_id>

    • 팁 : 해당 이미지에서 방금 실행 한 container_id를 표시합니다.docker ps
  3. @eltonStoneman의 조언에 따라 : docker exec -it <container_id> bash

    • 이제 Docker 터미널이 컨테이너에 대화 형 터미널을 표시합니다.
  4. 다른 도커 터미널을 열고 3 단계를 수행하여 컨테이너에 대한 또 다른 대화 형 터미널을 만듭니다. (헹굼과 반복)


Kitematic 을 실행할 수 있으면 exec 버튼을 클릭하여 선택한 컨테이너에서 터미널을 열 수 있습니다 .


docker run -it container_name bashbash promt 로 새 컨테이너시작 합니다 .

docker exec -it container_name bash이미 실행중인 컨테이너의 bash 프롬프트를 조인 합니다.


Docker Compose 사용 : X-Windows를 활성화하는 Compose yml이 있다고 가정 해 보겠습니다.

아래 단계에 따라 그래픽 IDE (예 : qtCreator), 노틸러스 및 터미널 창을위한 터미널을 시작할 수 있습니다.

가정 :

  • 호스트는 Windows 10입니다. 1803
  • 이미지는 Ubuntu Xenial입니다.
  • Docker 엔진은 18.03.1-ce입니다.
  • Docker Compose는 1.21.1입니다.
  • Windows Xming X Server는 7.7.0.25입니다-IPv4 인터페이스 192.168.1.101 사용

Dockerfile : Dockerfile-dev-ubuntu_xenial-Docker 이미지 생성

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

실행 : -초기 Powershell 터미널

  1. 빌드 이미지 : docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
  2. Docker를 분리하여 시작합니다. docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
  3. 컨테이너 나열 : docker ps
  4. 컨테이너 시작 : docker exec -it <CONTAINER ID> bash
  5. qtCreator 실행 : user@linuxkit-<generatedid>:~$ qtcreator

실행 : -새 Powershell 터미널

  1. 컨테이너 시작 : docker exec -it <CONTAINER ID> bash
  2. 노틸러스를 시작합니다. nautilus

실행 : -새 Powershell 터미널

  1. 컨테이너 시작 : docker exec -it <CONTAINER ID> bash
  2. 터미널 시작 : user@linuxkit-<generatedid>:~$

먼저 컨테이너의 이름을 얻은 docker container ls다음 해당 컨테이너에 들어가기 위해 docker exec 명령을 실행하십시오.docker exec <container_id> bash

참고 URL : https://stackoverflow.com/questions/39794509/how-to-open-multiple-terminals-in-docker

반응형