这是我的第一个问题,所以要温柔:)
我有一个Dockerfile如下:
FROM centos:latest
Maintainer Liz Miller
LABEL description="Image Built with Dockerfile."
RUN yum -y update
RUN yum -y install python-setuptools
RUN easy_install supervisor
RUN mkdir -p /var/log/supervisor
RUN yum -y install which
RUN yum -y install git
RUN yum install python
COPY myscript.py myscript.py
CMD ["python", "/myscript.py"]
myscript.py python脚本是:
text_file = open('output.txt', 'w')
text_file.write('Hello World')
text_file.close()
当我从这个Dockerfile构建图像时,使用脚本构建图像并运行它,我没有看到output.txt。它没有被创造出来。缺什么?我该如何解决这个问题?
答案 0 :(得分:1)
将text_file更改为/log/output.txt
构建图像不会运行CMD。
构建图像后,运行容器,执行
docker run -it --rm -v $(pwd)/log:/log imagename
您的脚本在容器内写入并向右退出。所以你不会在当前目录中看到它。解决这个问题的方法是将一个主机目录挂载到容器中,然后让脚本在其中写入,这样数据就可以持久化。
答案 1 :(得分:0)
所以我设法解决了这个问题。 CMD确实没有运行命令,但RUN确实如此。
我已将我的CMD线改为此行: 运行python myscript.py
这解决了我的问题,我能够在构建之后在容器上看到python脚本的输出文件。