簡體   English   中英

為什么我的 Python 腳本不能使用 Docker 運行?

[英]Why won't my Python script run using Docker?

我需要在我的 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 與第一個教程中的幾乎相同,不同之處在於我安裝的是 Tensorflow,而不是安裝 pystrich。 我已經成功制作了一個名為 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中CMD行中的'./'。 刪除並重新構建它可以解決問題。

如果要查看內聯輸出,請嘗試添加--tty--interactive (或簡稱為-ti )選項。 這將為您提供來自控制台上容器的stdout,以及通過stdin與您的腳本進行交互。

另一種運行方式是--detach ,它將在后台運行。 如果執行此操作,則Docker會將容器ID打印到控制台,然后可以運行docker logs ${ID} (將${ID}替換${ID}已打印的ID,以查看腳本已寫入的當前輸出)如果要避免使用生成的長ID,可以在容器中添加--name foo選項,以添加可在諸如docker logs foo類的命令中使用的名稱。

要使用 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 腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM