我正在使用docker安装hadoop-0.20.2。我有两个文件,一个是java安装,另一个是hadoop安装。我正在使用cmd命令启动服务
cmd ["path/to/start-all.sh"]
现在,我想编写第三个dockerfile,它执行一个示例map reduce作业。但问题是
第三个docker文件依赖于第二个hadoop docker文件。例如:
FROM sec_doc_file
RUN /bin/hadoop fs -mkdir input
它需要hadoop服务。但是hadoop服务只有在运行第二个docker文件之后才能启动。但我想在开始mr job之前把它作为第三个docker文件的一部分运行?有可能吗?如果是,请举例说明。如果没有,还有什么可能?
# something like
From sec_doc_file
#Start_Service
RUN /bin/hadoop fs -mkdir input
#continue_map_reduce_job
1条答案
按热度按时间kuarbcqp1#
作为新容器基础的docker映像是文件的基础,而不是应该运行的进程的基础。要做您想做的事情,您需要在dockerbuild期间启动所需的进程,并运行命令以正确设置。每个
RUN
创建一个新的aufs层,但不保留以前可能运行的服务。因此,如果您需要一个服务来执行一些设置过程中docker build
您需要在一行中运行它(连接命令或使用自定义脚本)。例子:因此,为了在docker构建期间设置hdfs文件夹和文件,您需要运行hdfs守护进程并以同样的方式执行所需的操作
RUN
命令: