当前位置: 首页 > news >正文

docker run 命令,不接it选项,run一个centos没有显示在运行,而run一个nginx却可以呢?

docker run 命令,不接it选项,run一个centos没有显示在运行,而run一个nginx却可以呢?

ChatGPT said:

你问到的这个现象,其实就是 镜像默认启动命令 (ENTRYPOINT / CMD) 的差异导致的。


🔍 情况分析

1. docker run centos

  • CentOS 官方镜像的 Dockerfile 默认写的是:
    CMD ["/bin/bash"]

  • 如果你直接运行:
    docker run centos
    容器会启动 /bin/bash
    但是由于你 没有加 -it(交互终端),

    • bash 没有输入

    • 没有绑定终端

    • 启动后马上退出

    所以容器一闪而过,在 docker ps 里看不到。


2. docker run nginx

  • Nginx 官方镜像的默认命令是:
    CMD ["nginx", "-g", "daemon off;"]

  • 这意味着它启动的就是 Nginx 服务进程,并且特别指定 daemon off,让 Nginx 以前台模式运行

  • Docker 容器要求 必须有一个前台进程一直运行,否则容器就会退出。

  • 所以运行:
    docker run nginx
    容器会保持运行(因为 nginx 主进程一直在前台)。


📊 总结对比

镜像默认命令是否需要 -it 才能保持运行行为
CentOS/bin/bash✅ 需要 -it,否则退出没输入就挂掉
Nginxnginx -g 'daemon off;'❌ 不需要服务以前台运行,容器保持存活

✅ 如何解决

如果你想让 CentOS 容器保持运行,即使不用 -it,可以指定一个“不会退出”的前台进程,比如:

docker run -d centos tail -f /dev/null

这样容器会后台运行,并保持存活,你可以随时用:

docker exec -it <容器ID> bash

进入操作。



-it的作用是?

ChatGPT said:

好,我们把 -it 拆开解释:


-i(interactive)

  • 保持标准输入 (STDIN) 打开,即使你没有连接到容器。

  • 没有 -i 时,容器里运行的程序如果需要输入,就会直接断掉。


-t(tty)

  • 为容器分配一个伪终端 (pseudo-TTY)

  • 有了 -t,你在容器里看到的是一个“像样的终端环境”,可以有命令提示符、格式化输出。

  • 没有 -t,就算 -i 让你能输入,但界面很原始,没有交互体验。


-it 组合效果

  • 最常用,表示:

    • 给容器一个伪终端

    • 保持输入通道

  • 典型场景:进入交互式 Shell,比如:
    docker run -it ubuntu bashdocker exec -it my_container sh
    这样你能像登录到一台虚拟机一样操作容器。


对比演示

假设你运行 CentOS:

  • 不加 -it
    docker run centos bash
    👉 bash 没有输入,马上退出,容器立刻消失。

  • -it
    docker run -it centos bash
    👉 进入交互式终端,可以输入命令、看到提示符,容器保持运行。


📌 总结一句:

  • -i 让容器 能接收输入

  • -t 让容器 看起来像一个终端

  • -it 就是 进入容器里交互操作的必备组合


文章转载自:

http://ZW9hKG4H.Lnrhk.cn
http://ZGE1m1sd.Lnrhk.cn
http://MuKl9H2W.Lnrhk.cn
http://I5VGdQFh.Lnrhk.cn
http://9XOZglkS.Lnrhk.cn
http://7r4Hh3T6.Lnrhk.cn
http://YfVMwyZh.Lnrhk.cn
http://mXAw77uG.Lnrhk.cn
http://zGviCqRJ.Lnrhk.cn
http://Ir1R2G9b.Lnrhk.cn
http://Zj5FK5O6.Lnrhk.cn
http://iCu5OWas.Lnrhk.cn
http://cgEbmnhN.Lnrhk.cn
http://Jn5Av8AD.Lnrhk.cn
http://vsHoLo24.Lnrhk.cn
http://DSn31FAd.Lnrhk.cn
http://f2Q3RlSe.Lnrhk.cn
http://GPx0xfap.Lnrhk.cn
http://dbxSIMac.Lnrhk.cn
http://JjTa2ONA.Lnrhk.cn
http://vpuE3ik3.Lnrhk.cn
http://pTAxJy6O.Lnrhk.cn
http://B2E5B25k.Lnrhk.cn
http://hQ7JIUH6.Lnrhk.cn
http://V9mefI3x.Lnrhk.cn
http://JAAuzzsq.Lnrhk.cn
http://ikMY6JVZ.Lnrhk.cn
http://pN6rDGMg.Lnrhk.cn
http://g3KnMcrA.Lnrhk.cn
http://Y20y3L1b.Lnrhk.cn
http://www.dtcms.com/a/370096.html

相关文章:

  • 【C++框架#3】Etcd 安装使用
  • 洛谷 P3178 [HAOI2015] 树上操作-提高+/省选-
  • Java全栈开发工程师的面试实战:从基础到复杂场景的技术探索
  • 【Flask】测试平台开发,重构提测管理页面-第二十篇
  • ICPC 2023 Nanjing R L 题 Elevator
  • TensorFlow 面试题及详细答案 120道(101-110)-- 底层原理与扩展
  • 《sklearn机器学习——聚类性能指标》Davies-Bouldin Index (戴维斯-博尔丁指数)
  • 美团9-6:编程题
  • 深度学习--自然语言预处理--- Word2Vec
  • Nikto 漏洞扫描工具使用指南
  • Redis(46) 如何搭建Redis哨兵?
  • Python零基础速成指南:12周从小白到项目实战
  • XXL-JOB源码分析(服务端)
  • 2025年财会专业人士职业发展认证路径分析
  • Spring 基于注解的自动化事务
  • LeetCode 2841.几乎唯一子数组的最大和
  • qt ElaWidgetTools添加Page页面
  • simd学习
  • 【Linux指南】动静态库与链接机制:从原理到实践
  • 分布式通信平台测试报告
  • LeetCode算法日记 - Day 33: 最长公共前缀、最长回文子串
  • 能发弹幕的简单视频网站
  • 【开题答辩全过程】以 基于Hadoop电商数据的可视化分析为例,包含答辩的问题和答案
  • 苍穹外卖优化-续
  • vi中的常用快捷键
  • 如何使显示器在笔记本盖上盖子时还能正常运转
  • 09_多态
  • 用 Go + HTML 实现 OpenHarmony 投屏(hdckit-go + WebSocket + Canvas 实战)
  • 《sklearn机器学习——聚类性能指标》Silhouette 系数
  • 什么是CSS