【发布时间】:2023-10-18 22:48:01
【问题描述】:
我在后台运行一个容器
docker run -d --name hadoop h_Service
它很快就退出了。但如果我在前台运行,它工作正常。我使用
检查了日志docker logs hadoop
没有错误。有什么想法吗?
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
【问题讨论】:
-
黄金法则是你应该防止你的 dockerized 服务器守护进程。大多数服务器包都有强制它们在前台运行的选项,因为守护进程是正常情况。
-
无论您希望完成什么,
chmod 777都是不安全并且错误的。您应该恢复正常的权限(在这种情况下可能是 755)。
标签: docker