도커에서 여러 터미널을 여는 방법은 무엇입니까?
두 개의 터미널이 필요한 도커 컨테이너에서 두 개의 별개의 프로세스를 시작해야 합니다.이를 달성하는 가장 좋은 방법은 무엇입니까?
실행할 수 있습니다.docker exec -it <container> bash여러 터미널에서 동일한 컨테이너에 연결된 여러 세션을 시작합니다.
@elton Stoneman의 훌륭한 답변에 대해 자세히 설명하기 위해 (나와 같은 모든 새로운 도커들을 위해):
도커 터미널 열기
백그라운드에서 컨테이너로 실행 중인 이미지를 가져옵니다.
- 팁:
docker ps그러면 해당 이미지에서 방금 시작한 container_id가 표시됩니다.
- @elton Stoneman의 조언에 따라:
- 이제 도커 터미널이 컨테이너에 대화형 터미널을 표시합니다.
- 다른 터미널을 열고 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 단자
- 이미지 빌드:
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 - qtCreator 시작:
user@linuxkit-<generatedid>:~$ qtcreator
실행: - 새 Powershell 터미널
- 시작 컨테이너:
docker exec -it <CONTAINER ID> bash - 노틸러스 발사:
nautilus
실행: - 새 Powershell 터미널
- 시작 컨테이너:
docker exec -it <CONTAINER ID> bash - 시작 터미널:
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
'programing' 카테고리의 다른 글
| Angular 2에서 라우팅을 추적하는 방법은 무엇입니까? (0) | 2023.08.15 |
|---|---|
| 어쨌든 VLA의 의미는 무엇입니까? (0) | 2023.08.15 |
| Android TextView에서 maxLength를 프로그래밍 방식으로 설정하는 방법은 무엇입니까? (0) | 2023.08.15 |
| 파일 수 x개 유지 및 다른 모든 파일 삭제 - Powershell (0) | 2023.08.15 |
| 다른 사용자가 설치한 앱을 제거하는 방법은 무엇입니까? (0) | 2023.08.15 |