2014-06-17 2 views
2

Google의 debian 이미지 (google/debian : wheezy)를 사용하여 처음으로 도커 이미지를 빌드하고 OpenJDK7을 설정하고 Tomcat7을 설정하려고합니다. . 내가 배쉬에있어 일단Debian의 Tomcat7 : wheezy Docker 인스턴스가 시작되지 않습니다.

docker pull google/debian:wheezy 
docker run -i -t google/debian:wheezy bash 

, 나는 잠시 후

apt-get update 
apt-get install openjdk-7-jre 

와 오픈 JDK를 설치, 나는 오류가 발생합니다 및 Tomcat7 설치 한 후 나는

apt-get update --fix-missing 
apt-get install openjdk-7-jre 
apt-get install tomcat7 

를 실행해야합니다

/etc/init.d/tomcat7 start 

으로 시작해보세요. 시간은 나에게 다음과 같은 오류가 있습니다 : 나는 분명히 뭔가를 잘못하고 있어요

[FAIL] Starting Tomcat servlet engine: tomcat7 failed! 

를 내 데비안 도커 설치 및 내 OSX 도커 설치 (적어도 일관성입니다, 그게 좀 인상적 모두에서 동일한 동작을 받고 있어요 !)

/var/log/catalina.out에서 보면 오류가 표시되지 않으며 localhost 로그도 표시되지 않습니다.

일반적인 debian : wheezy 이미지로 동일한 프로세스를 수행 했으므로 오류없이 정확하게 동일한 오류가 발생합니다. 어디서 무슨 생각을하고 있니?

+0

시도가 그것을 시작하는 대신 직접 초기화를 사용하여 문제를 해결 .d 스크립트를 실행하고 무슨 일이 일어나는 지보십시오. 나는 Google 이미지를 시도하지 않았지만 공식 우분투는 init.d 스크립트를 잘 처리하지 못하는 것 같습니다. – ivant

+0

@ivant, 나는 새 이미지를 만들고 수동으로 tomcat __을 다운로드했다. tar.gz, tomcat7과 tomcat8 모두에 대해 bin/catalina.sh start를 실행하면 시작되었다. 그래서 데비안의 init 스크립트에 문제가있는 것 같습니다. 귀하의 의견은 지금까지 최고의 답변입니다, 내가 수락 할 수 있도록 답변으로 게시하십시오. –

답변

7

나는 당신의 계단을 시험해보고 잘 바람둥이를 달릴 수 있었다. apt-get에서 문제가 발생하지 않았으므로 이제는 apt-get update --fix-missing이 필요했습니다. 나는 init.d 스크립트에서 tomcat을 시작하기까지했습니다.

내 생각에 네트워크에 문제가 있거나 데비안의 저장소에 문제가 있었지만 해결되었습니다.

어쨌든 지정된 명령이 실행되는 동안에는 컨테이너가 실행 중임을주의해야합니다. 즉, 바람둥이를 전경에서 실행하거나 다른 방식으로 동일한 것을해야합니다. 몇 가지 옵션으로 this answer을 확인할 수 있습니다.

[편집]

나는이 테스트를 위해 Dockerfile을 만들었습니다.

FROM google/debian:wheezy 

RUN apt-get update 
RUN apt-get install -y openjdk-7-jre tomcat7 

ADD run.sh /root/run.sh 
RUN chmod +x /root/run.sh 

EXPOSE 8080 

CMD ["/root/run.sh"] 

그리고 여기에 사용하는 run.sh 스크립트입니다 : 여기있다

$ docker build -t tomcat7-test . 
$ docker run -d -p 8080:8080 tomcat7-test 

지금 당신이 할 수 있어야 : 여기

#!/bin/bash 

/etc/init.d/tomcat7 start 

# The container will run as long as the script is running, that's why 
# we need something long-lived here 
exec tail -f /var/log/tomcat7/catalina.out 

은 샘플 빌드 및 실행 세션 바람둥이의 "It works!" http://localhost:8080/

+0

google/debian : google/debian을 깨끗하게 만들었습니까? wheezy, 더 이상 --fix-missing 문제가 발생하지 않지만 Tomcat이 아직 시작되지 않았습니다. (수동으로 다운로드하고 catalina.sh를 시작하면 제대로 작동합니다.) 내일 다시 시도 할거야. –

+0

dockerfiles를 사용하여, 그것은 완벽하게 작동했습니다. "를 추가해야 할 필요가 있음을 알기까지 시간이 좀 걸렸습니다." (또는 ./) 도커 빌드 명령의 끝에서 점이 내 화면의 먼지 사양이라고 생각했습니다. p –

1

Dockerfile에서 이미지를 빌드 하시길 권합니다. 이것은보다 명확하고, 일관되고 유지 보수가 용이 한 방법이며, 빌드 중에 문제가 발생하면 도커는 오류를 출력합니다.

Dockerfile의 시작은 예를 들어, 다음과 같습니다

FROM google/debian:wheezy 
MAINTAINER Jan Vladimir Mostert <[email protected]> 
RUN apt-get -qq update 
RUN apt-get install openjdk-7-jre 
RUN apt-get install tomcat7 

은 따라서 당신이 Dockerfile에서 바람둥이를 시작할 수 있습니다.

+0

Dockerfiles를 사용해 보도록하겠습니다. –

+1

@Pak, 좋은 조언이 있지만 문제 자체를 해결하지는 못합니다. 사실 내 워크 플로는 대화 형으로 이미지를 작성하고 Dockerfile에 명령을 추가하는 것이 올바른 일을하는 것을 보았을 때입니다. – ivant

1

: 트러스티 고정 표시기 실행 옵션 다음은 바람둥이 시작 (actualy 시작 - 중지 - 데몬)

docker run -itd --cap-add=SYS_PTRACE --security-opt=apparmor:unconfined mytomcat7image 
관련 문제