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

为何执行两次docker run nginx -it仅显示一个运行中的容器?

问题原因及解决办法

核心原因

你遇到的情况是docker run nginx -it中的-it参数导致的:

  • -i:保持容器标准输入打开
  • -t:为容器分配伪终端(TTY)

Nginx镜像默认启动命令是nginx -g daemon off;,让Nginx以前台进程运行。第一次执行docker run nginx -it时,容器会绑定到当前终端:

  1. 若你在这个终端按下Ctrl+C,会直接终止前台的Nginx进程,容器随之停止,只能在docker ps -a中看到它(状态通常为Exited (130),对应Ctrl+C的终止信号)
  2. 之后你执行第二次docker run nginx -it,新容器正常运行,所以docker ps只显示这个处于运行状态的容器

验证方式

执行docker ps -a查看全部容器,能看到第一个容器的状态为Exited类状态。

同时运行多个Nginx容器的方法

有两种可行方式:

  • 后台启动容器
    使用-d参数让容器在后台运行,避免占用终端:

    docker run -d nginx
    docker run -d nginx
    

    此时执行docker ps就能看到两个运行中的容器。

  • 保留交互式终端并后台运行
    若需要保留-it参数(方便后续进入容器操作),启动容器后按下Ctrl+P+Q组合键,将容器切换到后台运行,终端会回到宿主机器命令行,容器仍保持运行。之后就可以继续启动第二个容器。

如果需要把容器端口映射到宿主机,要给每个容器分配不同的宿主机端口避免冲突,例如:

docker run -d -p 8080:80 nginx
docker run -d -p 8081:80 nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:15:02