我有一个关于码头工人的存在问题。鉴于此dockerfile:
FROM someImage
MAINTAINER abc
ENV something=somehow
RUN sh calculatePi.sh
ENV somethingElse=somehow2
“计算Pi”是一个“连续”程序,永远不会结束,需要在后台运行。它计算PI的所有数字(3.1415 .....)并将其保存为txt文件。
我的问题:
答案 0 :(得分:1)
当Docker构建图像时,Dockerfile中的每条指令都在临时容器中执行,从前面的图像层运行。因此,如果您的calculatePi.sh
无休止地运行,那么您的图像将永远不会构建 - 它将坚持RUN
指令等待它完成。
在实践中,如果您尝试构建磁盘或CPU资源,则更有可能将磁盘或CPU资源最大化并取下计算机。无论哪种方式,您都无法获得可以运行的完整图像。
答案 1 :(得分:1)
不,Dockerfile无法正常工作。在Docker可以从中创建图像之前,需要完成{{1}}条指令。也许你想改为Directory.GetFiles()
?
答案 2 :(得分:1)
可能你可以写这样的docker文件:
FROM someImage
MAINTAINER abc
ENV something=somehow
ENV somethingElse=somehow2
ENTRYPOINT ["/bin/bash"]
CMD ["calculatePi.sh"]
然后当你运行这个图像
docker run -d thisImage
脚本calculatePi.sh将作为App在您的容器中运行。