2017-01-06 4 views
1

달리기 컨테이너가 실행되고 있다고 가정 해 봅시다. my_container. 나는 함께 새로운 쉘 세션을 시작 :도커 컨테이너의 특정 셸 인스턴스에 연결하고 있습니까?

docker exec -it my_container bash

그리고 나는 과정 (예를 들어, 파이썬 스크립트)를 시작하고 백그라운드에서 실행되는 스크립트를 유지하기 위해 다음 cntrl-pcntrl-q와 컨테이너를 종료합니다. 몇 가지 다른 스크립트를 사용하여이 작업을 여러 번 수행하면 스크립트의 표준을 볼 수 있도록 특정 셸 인스턴스에 어떻게 다시 연결합니까? docker attach my_container을 사용하면 항상 docker run 명령을 실행했을 때 시작한 첫 번째 셸 인스턴스에 배치됩니다.

답변

0

내가 일반적으로하는 일은 첫 번째 쉘 안에 tmux을 시작하는 것입니다. 그런 다음 새 창에서 다른 프로세스를 시작하십시오.

이론적으로는 가능하지만 아직 많은 문제가있어 항상 회피하는 것이 좋습니다.

0

이것은 사소한 모드이지만 도움이 될 수 있습니다. 대신 "에코"의 ... "스크립트 이름이 substitude.

컨테이너를 실행 한 후 고정 표시기 간부와 직접 스크립트를 실행하고 다른 파일에 자신의 출력을 리디렉션합니다. 그런 다음

docker exec -ti containerId /bin/bash -c 'echo "Hello script1" > /var/log/1.log' 
docker exec -ti containerId /bin/bash -c 'echo "Hello script2" > /var/log/2.log' 

당신이 볼 수

docker exec -ti containerId /bin/tail -f /var/log/1.log 
docker exec -ti containerId /bin/tail -f /var/log/2.log 

시킨다 당신은 또한

docker logs containerId 
사용할 수 있습니다 : 고정 표시기 간부 (uting) 당신이 원하는대로 고양이, 그렙, 꼬리 나 같은 몇 가지 다른 명령에 의해 파일에서

컨테이너에서 실행중인 명령에서/dev/stdout으로 출력을 리디렉션 할 수는 있지만 사용자의 필요를 이해했다면이 경우 stdout에 여러 scritps를 섞어 출력 할 수 있습니다.

관련 문제