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

为何docker create+start未显示CMD输出?Docker运行疑问

Docker 执行docker create+docker start后无CMD输出的原因分析

问题背景

给定Dockerfile内容:

FROM ubuntu

RUN apt update && apt install neofetch -y

CMD ["echo", "Hello From Docker to Ubuntu"]

执行构建命令:

docker build -t my-ubuntu:001 .

构建过程正常。

执行以下命令时,终端能正常显示Hello From Docker to Ubuntu:

docker run --name my-ubuntu-001-001 -it my-ubuntu:001

但执行以下两步操作后,终端看不到上述消息:

docker create --name my-ubuntu-001-002 my-ubuntu:001
docker start my-ubuntu-001-002

疑问:这是预期行为还是遗漏了配置?为何会出现此情况?

解答:这是预期行为

原因如下:

  • docker run -it中的-i(保持标准输入打开)和-t(分配伪终端)参数,会将容器的标准输出/错误直接绑定到当前终端,所以echo的内容能实时显示在tty中。
  • docker create默认不会分配伪终端,也不会建立容器与当前终端的关联;docker start默认仅启动容器进程,不会将终端附加到容器的输出流,因此echo的内容会写入容器的内部日志,而不是输出到当前tty。
  • 如果想在启动时看到输出,可以使用docker start -a(-a参数表示附加到容器的标准输出和错误流):
    docker start -a my-ubuntu-001-002
    
  • 也可以在创建容器时就指定-it参数,后续启动时用docker start -a也能看到输出:
    docker create --name my-ubuntu-001-003 -it my-ubuntu:001
    docker start -a my-ubuntu-001-003
    
  • 另外,无论哪种方式,都可以用docker logs命令查看容器的输出日志:
    docker logs my-ubuntu-001-002
    

内容的提问来源于stack exchange,提问作者Manuel Jordan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:32:52