2016-09-15 4 views
-1

데몬 모드로 실행 중일 때만 원하는대로 수행하는 docker (squid) 내부에서 실행할 프로그램이 있습니다.Docker가 프로그램을 데몬으로 실행

제 질문은, sh 진입 점이 주어지면, 도커를 종료하지 않고 프로그램을 백그라운드에서 계속 실행할 수 있습니까? 여기

의 내 (간체) 엔트리 포인트 :

#!/bin/bash 
set -e 

# default behaviour is to launch squid 
if [[ -z ${1} ]]; then 
     if [[ ! -d ${SQUID_CACHE_DIR}/00 ]]; then 
       echo "Initializing cache..." 
       $(which squid) -N -f /etc/squid4/squid.conf -z 
     fi 
     echo "Starting squid..." 
     exec $(which squid) -f /etc/squid4/squid.conf -YCd 1 
else 
     exec "[email protected]" 
fi 
+0

끝에 추가'''ping localhost 2> & 1/dev/null''' –

+0

오징어는 컨테이너 내부의 유일한/기본 프로세스로 의도되어 있습니까? 그렇다면 전경 모드에서 오징어를 실행하고 컨테이너를 분리하지 않는 것이 어떻습니까? – jwodder

+0

squid가 포 그라운드에서 실행 된 경우 기능이 손실 됨 : 여러 작업자 –

답변

0

일반적으로 다음과 같이 당신이 'nohup을'명령을 사용 로그 아웃 후 당신은 당신이 계속 실행하려는 명령을 실행할 때 :

nohup [COMMAND] & 

컨테이너를 시작할 때 squid를 시작하는 것이 좋습니다. Dockerfile에서 이것을 정의 할 수 있습니다. Dockerfiles는 '도커 빌드'명령을 사용하여 이미지를 만드는 방법을 알려줍니다. 이렇게하면 'docker run'으로 컨테이너를 시작할 때 응용 프로그램이 컨테이너와 상호 작용할 필요없이 즉시 시작됩니다.

+0

아무 문제없이 시작할 수 있습니다. 문제는 내가 데몬 화하지 않고서 만 시작할 수 있다는 점이다. –

관련 문제