docker的Python脚本不能正确执行

当我运行我的容器时,我试图用“/ usr / bin / python”从根目录(“/”)运行“docker.py”。 我已经检查了源图像以确保python二进制文件存在,我已经将docker.py上传到了docker镜像,并成功运行了该二进制文件。 但是,当我尝试创build图像,然后运行图像时,出现此错误(“EOFError:EOF阅读一行时”),我不知道这意味着什么或从哪里开始。 任何帮助表示赞赏。 提前致谢!

猫docker.py

#!/usr/bin/python my_name = raw_input("Enter your name: ") print my_name quit() 

猫Dockerfile

 FROM python:2.7 ADD docker.py /docker.py CMD ["/usr/bin/python", "/docker.py"] 

dockerbuild设。

 Sending build context to Docker daemon 175.8MB Step 1/3 : FROM python:2.7 ---> b1d5c2d7dda8 Step 2/3 : ADD docker.py /docker.py ---> f55a19158773 Step 3/3 : CMD ["/usr/bin/python", "/docker.py"] ---> Running in b830da5a2f5b ---> ef5b878d203f Removing intermediate container b830da5a2f5b Successfully built ef5b878d203f SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories. 

docker运行ef5b878d203f

 Enter your name: Traceback (most recent call last): File "/docker.py", line 2, in <module> my_name = raw_input("Enter your name: ") EOFError: EOF when reading a line 

麻烦的是你的docker.py脚本需要input。 正如@Klaus D.评论的那样,对于raw_input命令,您需要在交互式shell中。 在Docker容器中运行时,不存在交互式shell,因此当您运行raw_input时,只会收到该命令的意外结果,因此会收到错误。

一旦你启动容器,从用户的angular度来看,它就像一个小虚拟机,你可以拥有的唯一交互是通过你在容器中设置的方法。 或者使用以下方法input容器:

 docker exec -it CONTAINER_HASH /bin/bash 

从那里你有一个交互式的shell,如果你像那样login,那么你可以运行

 python /docker.py 

它可以像你期望的那样工作。