471 Stimmen

Warum beendet der Docker-Container sofort?

Ich führe einen Container im Hintergrund aus mit

 docker run -d --name hadoop h_Service

es beendet sich schnell. Aber wenn ich es im Vordergrund ausführe, funktioniert es einwandfrei. Ich habe die Logs überprüft mit

docker logs hadoop

Es gab keinen Fehler. Irgendwelche Ideen?

DOCKERFILE

 FROM java_ubuntu_new
 RUN wget http://archive.cloudera.com/cdh4/one-click-install/precise/amd64/cdh4-repository_1.0_all.deb
 RUN dpkg -i cdh4-repository_1.0_all.deb
 RUN curl -s http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh/archive.key | apt-key add -
 RUN  apt-get update
 RUN apt-get install -y hadoop-0.20-conf-pseudo
 RUN dpkg -L hadoop-0.20-conf-pseudo
 USER hdfs
 RUN hdfs namenode -format
 USER root
 RUN apt-get install -y sudo
 ADD . /usr/local/
 RUN chmod 777 /usr/local/start-all.sh
 CMD ["/usr/local/start-all.sh"]

start-all.sh

 #!/usr/bin/env bash
 /etc/init.d/hadoop-hdfs-namenode start
 /etc/init.d/hadoop-hdfs-datanode start
 /etc/init.d/hadoop-hdfs-secondarynamenode start
 /etc/init.d/hadoop-0.20-mapreduce-tasktracker start
 sudo -u hdfs hadoop fs -chmod 777 /
 /etc/init.d/hadoop-0.20-mapreduce-jobtracker start
 /bin/bash

-8voto

dskow Punkte 924

Da das Bild ein Linux ist, ist es wichtig zu überprüfen, ob alle in dem Container verwendeten Shell-Skripte Unix-Zeilenumbrüche haben. Wenn sie am Ende ein ^M haben, handelt es sich um Windows-Zeilenumbrüche. Eine Möglichkeit, sie zu korrigieren, besteht darin, dos2unix auf /usr/local/start-all.sh auszuführen, um sie von Windows auf Unix umzuwandeln. Das Ausführen des Dockers im interaktiven Modus kann dabei helfen, andere Probleme herauszufinden. Es könnte ein Tippfehler im Dateinamen sein oder etwas Ähnliches. Siehe https://en.wikipedia.org/wiki/Newline

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X