Docker에서 여러 터미널을 여는 방법은 무엇입니까?
두 개의 터미널이 필요한 도커 컨테이너에서 두 개의 개별 프로세스를 시작해야합니다.이를 달성하는 가장 좋은 방법은 무엇입니까?
당신은 실행할 수 있습니다 docker exec -it <container> bash
동일한 컨테이너에 연결된 여러 세션을 시작하기 위해 여러 단말기에서.
@eltonStoneman 의 훌륭한 답변 을 확장하려면 (나와 같은 모든 새로운 도커 사람들에게) :
도커 터미널 열기
백그라운드에서 컨테이너로 실행되는 이미지를 가져옵니다.
docker run -d -it <image_id>
- 팁 : 해당 이미지에서 방금 실행 한 container_id를 표시합니다.
docker ps
- 팁 : 해당 이미지에서 방금 실행 한 container_id를 표시합니다.
@eltonStoneman의 조언에 따라 :
docker exec -it <container_id> bash
- 이제 Docker 터미널이 컨테이너에 대화 형 터미널을 표시합니다.
다른 도커 터미널을 열고 3 단계를 수행하여 컨테이너에 대한 또 다른 대화 형 터미널을 만듭니다. (헹굼과 반복)
Kitematic 을 실행할 수 있으면 exec 버튼을 클릭하여 선택한 컨테이너에서 터미널을 열 수 있습니다 .
docker run -it container_name bash
bash 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 터미널
- 빌드 이미지 :
docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
- Docker를 분리하여 시작합니다.
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 container ls
다음 해당 컨테이너에 들어가기 위해 docker exec 명령을 실행하십시오.docker exec <container_id> bash
참고 URL : https://stackoverflow.com/questions/39794509/how-to-open-multiple-terminals-in-docker
'IT Share you' 카테고리의 다른 글
파이썬 문자열에서 쉼표를 제거하는 방법 (0) | 2020.12.10 |
---|---|
node.js에서 지원하는 AWS Lambda 함수를 사용하여 SNS 주제에 메시지를 게시 할 수 있습니까? (0) | 2020.12.10 |
ListBox.items를 일반 목록으로 변환하는 가장 간결한 방법 (0) | 2020.12.10 |
Python 3.1에서 문자열의 HTML 엔티티를 어떻게 이스케이프 해제합니까? (0) | 2020.12.09 |
변수가 초기화되지 않았을 수 있음 오류 (0) | 2020.12.09 |