2015-01-14 2 views
5

도커 컨테이너에서 실행하고 싶은 테스트 세트가 있습니다. 테스트 중간에 테스트 데이터가 변경되어 JETTY를 다시 시작해야합니다.Docker : 컨테이너 내부에서 프로세스를 다시 시작하는 방법은 무엇입니까?

가장 좋은 방법은 무엇입니까? SSH와

  1. -하지만 고정 표시기 ssh를위한 최선의 선택되지 않습니다 :

    나는 몇 가지 옵션을 상상할 수있다.

  2. 소켓을 청취하는 Docker의 Python 에이전트 - 포트를 하나 더 공개하고, 부두를 연결하고 다시 시작하십시오.

아마도 더 좋은 아이디어가 있을까요?

감사합니다.

답변

10

당신이 고정 표시기 컨테이너 차 프로세스 (사용자가 설정 즉, 하나는 다시 시작하려는 과정처럼 소리 Dockerfile에있는 경우 Dockerfile에 'ps -ef'를 실행하면 프로세스의 PID가 1로 설정됩니다. 이 경우 컨테이너 내부에서 다시 시작할 수 없습니다. 다음과 같이 컨테이너 자체를 다시 시작해야합니다.

docker restart <container_id> 
+0

거의 1 년 6 개월 전 ... :) 실제로 이것은 프로세스를 다시 시작하는 올바른 방법입니다. 도커 컨테이너 만 다시 시작하십시오. 이것은 도커 솔루션 자체의 주요 원칙입니다. – SergiiKozlov

2

컨테이너를 입력하고 다시 시작하십시오.

수동 방법 :

docker exec -it <containeridorname> /bin/bash 

또는 자동화 된 방법 :.

docker exec -it <containeridorname> /restartjettycommand.sh 
+0

고맙습니다. 그것은 잘 작동합니다. 하지만 지금은 또 다른 문제가 있습니다. Dockerfile에서 CMD 명령으로 부두를 시작합니다. 그리고이 프로세스를 다시 시작할 수없는 것 같습니다 : ( – SergiiKozlov

+0

부두에 대한 세부 사항은 확실하지 않습니다. 대안은 runit 또는 supervisord와 같은 것을 사용하는 것입니다. 그러면 컨테이너에 exec 할 수 있고 단순히 서비스를 다시 시작할 수 있습니다. – user2105103

관련 문제