运行简单Docker容器无输出且docker ps无运行记录该如何解决
问题根因分析
- 你当前Dockerfile仅配置了
ENTRYPOINT ["python3"],执行docker run <镜像名>时没有传入要执行的脚本参数,python3命令默认会启动交互模式 - 未加
-it参数启动容器时,Docker不会分配伪终端、也不会打开标准输入,python3检测不到输入环境会直接退出,因此容器启动后马上终止,自然不会有输出、docker ps也看不到运行中的容器
解决方案
方案1:直接在run时传入脚本参数(满足执行python3 test.py这类命令的需求)
执行run命令时直接追加要执行的脚本名即可,示例:
docker run <你的镜像名> test.py
如果后续要执行其他Python脚本,直接替换参数即可,比如要执行app.py就运行:
docker run <你的镜像名> app.py
方案2:修改Dockerfile添加默认CMD,无参数时默认执行test.py
如果希望直接执行docker run <镜像名>就自动运行test.py,可以在Dockerfile末尾增加CMD指令:
FROM python:3.8-slim-buster COPY . /app WORKDIR /app ENTRYPOINT [ "python3" ] # 新增默认参数,ENTRYPOINT会和CMD拼接为 python3 test.py CMD ["test.py"]
修改后重新构建镜像,之后运行:
- 直接执行
docker run <镜像名>:默认执行test.py输出对应内容 - 需要执行其他脚本时,仍可手动传参覆盖默认CMD:
docker run <镜像名> other.py
方案3:需要进入Python交互模式的情况
如果要进入Python交互式终端编写代码,run时加-it参数即可:
docker run -it <你的镜像名>
验证方法
运行容器后如果确认输出正常,可以执行docker ps -a查看所有状态的容器,能看到刚刚执行完毕退出的容器记录,状态为Exited (0)即代表程序正常运行无错误。
内容的提问来源于stack exchange,提问作者smallbirds
相关产品推荐
相关产品推荐

