programing

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

iphone6s 2023. 8. 15. 10:54
반응형

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

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

실행할 수 있습니다.docker exec -it <container> bash여러 터미널에서 동일한 컨테이너에 연결된 여러 세션을 시작합니다.

@elton Stoneman의 훌륭한 답변에 대해 자세히 설명하기 위해 (나와 같은 모든 새로운 도커들을 위해):

  1. 도커 터미널 열기

  2. 백그라운드에서 컨테이너로 실행 중인 이미지를 가져옵니다.

  • 팁: docker ps 그러면 해당 이미지에서 방금 시작한 container_id가 표시됩니다.
  1. @elton Stoneman의 조언에 따라:
  • 이제 도커 터미널이 컨테이너에 대화형 터미널을 표시합니다.
  1. 다른 터미널을 열고 3단계를 수행하여 컨테이너에 대한 다른 대화형 터미널을 만듭니다. (린스반복)

docker run -it container_name bashbash 프롬프트를 사용하여 새 컨테이너를 시작합니다.

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

먼저 컨테이너의 이름을 가져옵니다.docker container ls그런 다음 해당 컨테이너에 들어가려면 docker exec 명령 실행docker exec <container_id> bash

도커 합성 사용:예를 들어 X-Windows를 사용할 수 있는 구성 기호가 있다고 가정합니다.

아래 단계에 따라 그래픽 IDE(예: qtCreator), nautilus 및 터미널 창용 터미널을 시작할 수 있습니다.

가정:

  • 호스트는 Windows 10.1803입니다.
  • 이미지는 Ubuntu Xenial입니다.
  • 도커 엔진은 18.03.1-ce입니다.
  • 도커 구성은 1.21.1입니다.
  • Windows Xming X Server는 7.7.0.25이며 IPv4 인터페이스 192.168.1.101을 사용합니다.

도커 파일:Docker file-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-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 exec -it <containerName> bash

하지만 도커는 이 컨테이너가 존재하지 않는다고 말했습니다.그 후 containerName을 container로 교체했습니다.신분증과 이 속임수는 저에게 효과가 있었습니다.

각 컨테이너 id를 알고자 하는 경우 아래 명령을 실행합니다.

sudo docker ps

그런 다음 이 명령을 실행하여 컨테이너의 새 터미널을 엽니다.

docker exec -it <containerID> bash

건배!

를 시작했습니다.-i 상적인호,-tTTY):

docker run -i -t <IMAGE_URL> /bin/bash

프롬프트가 이제명프트다시음다니됩작으로 합니다.root@484ded1212aa:/어느 곳에서484ded1212aa는 것은입니다.CONTAINER ID 탭 창 는른탭또에 (를창니다습)서해 ID용사했당을 했습니다.

docker exec -i -t 484ded1212aa /bin/bash

두 탭 이제 두널탭모다시작다니로 합니다.root@484ded1212aa:/그리고 두 번째는 첫 번째 터미널(위의 두 명령 사이)에서 복제한 Gitrepo를 포함합니다.한 탭에서 코드를 대화식으로 변경하고 다른 탭에서 실행하고 싶었기 때문에 유용했습니다.

▁▁get▁way▁to▁another를 얻는 다른 방법.CONTAINER_ID또는NAMES는 다음 명령을 따릅니다.

docker container ls

그러면 다음과 같은 결과가 나옵니다.

CONTAINER ID        IMAGE                                            COMMAND             CREATED             STATUS              PORTS               NAMES
484ded1212aa        registry.gitlab.com/molcas/dockerfiles/gcc-4.8   "/bin/bash"         2 hours ago         Up 2 hours                              hardcore_einstein

두 개의 탭으로 열리더라도 하나의 컨테이너만 남아 있습니다.

Kitematic을 실행할 수 있는 경우 exec 버튼을 클릭하여 선택한 컨테이너의 터미널을 열 수 있습니다.

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

반응형