You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Ubuntu镜像的Docker容器运行后无输出该如何排查?

问题排查与修复方案

你遇到的问题由3个配置错误共同导致:

  • RUN 指令执行时机错误
    RUN 是镜像构建阶段执行的指令,只在你跑docker build的时候生效,和后续容器运行完全无关。构建阶段是完全非交互环境,read username 会读取到空值,这段执行的日志只会出现在构建日志里,不会在容器运行时输出。
  • 缺失容器启动执行指令
    你没有在Dockerfile中配置ENTRYPOINT或CMD,容器启动时默认执行Ubuntu镜像自带的默认命令bash,非交互模式下启动后会直接退出,根本不会运行你写的program.sh,自然没有任何输出。
  • 脚本执行权限与安装参数缺失
    原Dockerfile没有给program.sh加执行权限,且apt-get install没有加-y参数,非交互安装时会因为等待用户确认安装而构建失败,你之前能构建成功大概率是走了缓存或者本地特殊配置。

修正步骤

1. 修改Dockerfile内容

# 基础镜像
FROM ubuntu

# 安装依赖,加-y实现非交互安装
RUN apt-get update && apt-get install -y figlet

# 拷贝脚本到根目录
COPY program.sh /

# 给脚本添加执行权限
RUN chmod +x /program.sh

# 指定容器启动时执行目标脚本
CMD ["/program.sh"]

2. 重新构建镜像后运行容器

运行容器时必须加-it参数开启交互终端,否则无法看到提示也无法输入姓名:

docker run -it <你构建的镜像名称>

执行后就会看到输入姓名的提示,输入后即可输出figlet转换后的艺术字。


内容的提问来源于stack exchange,提问作者Tom el Safadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 17:03:04