Docker构建状态

时间:2016-09-27 12:49:17

标签: docker dockerfile

我有一个关于码头工人的存在问题。鉴于此dockerfile:

FROM someImage
MAINTAINER abc
ENV something=somehow
RUN sh calculatePi.sh
ENV somethingElse=somehow2

“计算Pi”是一个“连续”程序,永远不会结束,需要在后台运行。它计算PI的所有数字(3.1415 .....)并将其保存为txt文件。

我的问题:

  1. 这个dockerfile是否合理?
  2. 如果是,当我根据此图像运行容器时,保存的状态是什么?换句话说,如果我打开txt文件,我会看到什么?

3 个答案:

答案 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在您的容器中运行。