Docker构build状态

我有一个关于docker工人的存在问题。 鉴于这个docker文件:

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

“计算Pi”是一个永无止境的“连续”程序,需要在后台运行。 它计算PI(3.1415 …..)的所有数字并将其保存到一个txt文件。

我的问题:

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

当Docker构build一个映像时,Dockerfile中的每个指令都会在临时容器中执行,从前一个映像层运行。 所以如果你的calculatePi.sh无休止地运行,那么你的映像将永远不会build立 – 它将坚持在RUN指令等待它完成。

在实践中,如果您尝试构build它,则更有可能将磁盘或CPU资源最大化,并取下机器。 无论哪种方式,你都不会得到你可以运行的完整图像。

不,那个Dockerfile不起作用。 RUN指令需要在Docker可以从它们创build映像之前完成。 也许你想要做一个CMD指令呢?

也许你可以这样写你的docker文件:

 FROM someImage MAINTAINER abc ENV something=somehow ENV somethingElse=somehow2 ENTRYPOINT ["/bin/bash"] CMD ["calculatePi.sh"] 

然后当你运行这个图像

 docker run -d thisImage 

脚本calculatePi.sh将作为应用程序在您的容器中运行。