为什么我的Python脚本不会使用Docker运行?

时间:2016-10-17 11:26:27

标签: python windows docker tensorflow

我需要在我的Windows机器上使用Tensorflow。我已经安装了Docker,并且遵循这两个教程(https://runnable.com/docker/python/dockerize-your-python-applicationhttps://civisanalytics.com/blog/engineering/2014/08/14/Using-Docker-to-Run-Python/),我正在尝试运行我的Python脚本。我的Dockerfile几乎与第一个教程中的相同,只是不是安装pystrich,而是安装Tensorflow。我已经成功创建了一个名为python-stuff的Docker镜像,并且我创建了一个名为my_script.py的脚本,它只导入Tensorflow然后打印Hello world。

当我运行命令docker run python-stuff python my_script.py时,我没有得到任何错误,但脚本不会产生任何输出。有什么想法吗?

编辑:我的Dockerfile:

FROM python:3
ADD my_script.py /
RUN pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp35-cp35m-linux_x86_64.whl
CMD ["python", "./my_script.py"]

正在运行docker logs python-stuff会产生Error: No such container: python-stuff

2 个答案:

答案 0 :(得分:2)

我修好了!问题只是Dockerfile中CMD行中的'./'。删除它并再次构建它解决了这个问题。

答案 1 :(得分:1)

如果您想查看内联输出,请尝试添加--tty--interactive(或简称为-ti)选项。这将通过控制台上的容器为您提供stdout,并通过stdin与您的脚本进行交互。

另一种运行方式是--detach,它将在后台运行。如果这样做,Docker会将容器ID打印到控制台,然后您可以运行docker logs ${ID}(用已打印的ID替换${ID},以查看脚本写入的当前输出stdout。如果您想避免使用长的生成ID,可以将--name foo选项添加到容器中,以添加可在docker logs foo等命令中使用的名称。