运行短期脚本后保留Docker容器

时间:2018-05-05 01:17:46

标签: docker containers openshift

我有两个Python脚本,我在一个容器中运行。第一个脚本从磁盘加载一些数据,进行一些操作,然后将输出保存在容器中。第二个脚本做了类似的事情,再次保存容器上的输出。但是,一旦这些脚本运行完毕,我的容器基本上就完成了#34;和Kubernetes基本上重新部署相同的构建,永远。我希望能够运行这些脚本一次,但无论何时不继续构建容器,都能够访问这些结果。

这是我的Dockerfile,通常是:

FROM X
...
RUN python3 script1.py
RUN python3 script2.py

目前我尝试CMD sleep infinity尝试稍后通过shell访问容器,但这不起作用。我也试过ENTRYPOINT ["sh"],但没有用。

所以一般来说,我现在使用的Dockerfile看起来像这样:

FROM X
...
RUN python3 script1.py
RUN python3 script2.py
CMD sleep infinity

2 个答案:

答案 0 :(得分:1)

在Kubernetes / OpenShift中你会使用一个Job。但是为了保存结果,您还需要声明一个持久卷并将其挂载到作业的Pod中,从而为您提供保存结果的位置。您可以稍后创建一个临时pod来访问持久卷中的结果。

答案 1 :(得分:0)

你需要在这里使用docker-compose。你可以做什么从主机容器或你想要的目录中挂载/ var / opt / logs到存储日志的容器内的同一目录。然后两个目录无论你的容器是向上还是向下,文件都将被同步。请注意我如何安装脚本,这是我在容器启动和运行时所需要的。