【问题标题】:Why won't my Python script run using Docker?为什么我的 Python 脚本不能使用 Docker 运行?
【发布时间】:2016-10-17 11:26:26
【问题描述】:

我需要在我的 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

【问题讨论】:

  • 发布你的 Dockerfile,docker logs 你的容器
  • python-stuff 是图像的名称,而不是容器的名称。运行docker ps --all,您将看到所有已退出容器的 ID。然后运行docker logs b6a11 - 或以任何最新容器的 ID 开头。另外:您期望什么输出?您的脚本是生成文件还是写入控制台?
  • 嗯,好的。运行 docker logs <id> 不会产生任何结果。该脚本只是导入 Tensorflow 并将“Hello world”打印到控制台。

标签: python windows docker tensorflow


【解决方案1】:

我修好了!问题只是 Dockerfile 中 CMD 行中的“./”。删除它并重新构建它解决了这个问题。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢!但是,我仍然没有从我的程序中得到任何输出。不确定它是否正在运行。
    【解决方案3】:

    使用 Python Docker 映像运行 Python 脚本的命令是

    $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python your-daemon-or-script.py
    

    它可以推广到任何图像和python脚本。

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      相关资源
      最近更新 更多