docker python脚本无法正常执行

时间:2017-11-12 05:54:34

标签: python docker dockerfile

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

cat docker.py

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

cat Dockerfile

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

docker build。

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 run 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

1 个答案:

答案 0 :(得分:1)

问题是您的docker.py脚本需要输入。正如@Klaus D.在评论时,对于raw_input命令,您需要处于交互式shell中。当您在docker容器内运行时,没有交互式shell,因此当您运行raw_input时,它只会意外地结束该命令,从而导致您收到错误。

启动容器后,从用户的角度来看,它就像一个小虚拟机,您可以与它进行的唯一交互是通过您在容器内设置的方法。或者使用以下方式输入容器:

docker exec -it CONTAINER_HASH /bin/bash

从那里你有一个交互式shell,如果你这样登录那么你可以运行

python /docker.py

它可以正常运作。