简体   繁体   中英

Why won't my Python script run using Docker?

I need to use Tensorflow on my Windows machine. I have installed Docker, and following these two tutorials ( https://runnable.com/docker/python/dockerize-your-python-application and https://civisanalytics.com/blog/engineering/2014/08/14/Using-Docker-to-Run-Python/ ), I am trying to run my Python script. My Dockerfile is nearly identical to the one in the first tutorial, except that instead of installing pystrich, I'm installing Tensorflow. I've successfully made a Docker image called python-stuff, and I've made a script called my_script.py which just imports Tensorflow and then prints Hello world.

When I run the command docker run python-stuff python my_script.py , I don't get any errrors, but the script does not produce any output. Any ideas?

EDIT: My 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"]

Running docker logs python-stuff gives Error: No such container: python-stuff

I fixed it! The problem was simply the './' in the CMD line in the Dockerfile. Removing this and building it again solved the problem.

If you want to see inline output, try adding the --tty and --interactive (or -ti for short) options. This will give you the stdout from your container on the console, as well as interact via stdin with your script.

The other way to run is with --detach , which will run in the background. If you do this, you Docker will print the container ID to the console, and you can then run docker logs ${ID} (replacing ${ID} with the ID that was printed, to see the current output your script has written to stdout. If you want to avoid using the long, generated ID, you can add the --name foo option to your container, to add a name which can be used in commands like docker logs foo .

For running a Python script with Python Docker image the command is

$ 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

It can be generalized for any image and python script.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM