我可以重用需要用户输入的 docker 容器吗?使用 docker 容器启动时发生 EOF 错误

Can I reuse a docker container that requires user input? EOF error occurs when using docker container start

提问人:JakePember 提问时间:1/13/2021 最后编辑:JakePember 更新时间:1/13/2021 访问量:975

问:

下面将提供代码,但让我先总结一下。

我创建了一个简单的 Python 脚本,用于演示目的询问用户的名称是什么。然后,我制作了图像并使用以下命令运行它: .这按预期工作,我收到提示询问我的名字,我可以毫无问题地输入它,并且 docker 容器退出。docker run -it docker:example

现在,下次我想运行程序时,我不会创建一个新容器,而是运行 这会引发以下问题 EOFError:读取行时的 EOFdocker container start <container_name>

我对 Docker 比较陌生,但据我所知,该命令具有为输入创建所需的伪 TTY 的选项,这是该命令所缺少的。docker run-tdocker container start

我的目标是重用相同的 docker 容器,而不必每次都使用 run 命令创建一个新的容器。

Docker文件

# Set base image (host OS)
FROM python:3.8

# Set the working directory in the container
WORKDIR /src

# Copy the content of the local src directory to the working directory
COPY src/ .

# Command to run on container start
CMD ["python", "main.py"]

main.py

name = input('Enter your name: ')
print(f'Hello', name)

重现我的用例的步骤

  1. docker build -t docker:example
  2. docker run -it docker:example按预期工作
  3. docker container start <container_name>失败

第 3 步失败并显示 EOFError:EOF 读取一行时,我也尝试使用 -ai 选项。

输出

docker container start -ai dockerExample
Enter your name: Traceback (most recent call last):
  File "main.py", line 1, in <module>
    name = input('Enter your name: ')
EOFError: EOF when reading a line
Python Docker 输入 容器 EOF

评论

0赞 David Maze 1/13/2021
docker run一个新容器并不是特别昂贵,我就是这样做的。(我几乎从不使用容器; 停止的容器,改为新容器。docker startdocker rmdocker run
0赞 JakePember 1/13/2021
这可能是真的,但是我的特定用例提示我输入 2FA 代码。如果我使用,我将始终提示输入。如果我使用预先存在的经过验证的容器,则几天内无需提供 2FA 代码。因此,我确实有一个小用例,其中重用容器有好处。@David迷宫,我非常感谢您的输入,感谢您抽出宝贵时间回复!docker run

答: 暂无答案