首页/云/Docker 容器速查/docker run -it 交互式运行
基础命令50 条

docker run -it 交互式运行

-i 保持标准输入打开、-t 分配伪终端,两者组合后像 SSH 一样进入容器交互环境,常用于一次性调试与试跑镜像。

Docker 容器速查云更新于 2026-10-13

交互式运行是什么

交互式运行由两个选项组成:一个保持标准输入打开,另一个分配伪终端。两者组合后,容器内的命令行就像远程登录一样可以正常输入输出,常用于一次性调试、试跑镜像,以及在干净环境里验证命令。

基本信息

语法docker run -it [选项] IMAGE [COMMAND]
含义拆解-i 保持标准输入打开;-t 分配伪终端
常用搭配--rm 退出即清理 -v 挂载当前目录 -w 设定工作目录 -u 指定用户
退出方式输入退出命令或按组合键结束主进程,容器随之停止
适用前提需要真实的终端会话,脚本与流水线里通常不满足

典型使用场景

  • 试跑陌生镜像:拉下来先进去看目录结构与可用命令,再决定怎么用
  • 临时验证命令:在干净环境里跑一次脚本,确认依赖与参数是否正确
  • 挂载当前目录做实验:把工作目录挂进容器,就地编译或处理数据后直接看到结果
  • 排查网络与解析:在容器内执行查询命令,验证服务发现与连接是否正常
  • 生成密钥或证书:用官方工具镜像生成文件再复制出来,避免污染宿主机环境

常用示例

常用示例
docker run --rm -it alpine:3.20 sh                          # 最小交互环境
docker run --rm -it -v $PWD:/work -w /work node:20-alpine sh  # 挂当前目录进去跑
docker run --rm -i ubuntu:24.04 cat /etc/os-release          # 只要输入不要终端
docker run --rm -it --entrypoint sh nginx:1.27-alpine        # 覆盖入口点进去看
exit                                                         # 会话内退出,容器随即停止

两个选项分别管什么

选项作用单独使用时的问题
-i保持标准输入打开能看到输出但拿不到提示符,无法正常交互
-t分配伪终端终端行为不完整,回显与信号处理可能异常
-it两者组合日常交互的默认写法
--rm退出后删除容器现场与日志一并消失,排障时慎用
-u指定用户运行以默认用户进去,可能看到与应用不一致的权限结果

交互会话里的常用动作

  • 看系统版本与包管理器类型,判断后续用哪套命令排查
  • 查看目录结构与启动脚本,确认镜像的启动逻辑
  • 验证环境变量是否按预期注入,确认配置来源
  • 手工执行一次业务命令,比对与容器启动时的差异
  • 确认网络与解析行为,验证依赖服务的连通性
用交互方式跑常驻服务很危险:会话一断开或按了中断组合键,主进程就会收到结束信号,容器随之停止。正式服务要用后台方式启动。
在脚本或流水线里不要分配伪终端,没有真实终端时会直接报错;这类场景只需要保持输入的那个选项,或者干脆不用交互选项。

调试完要把结论留下

  • 把在容器里验证过的命令与结论记录到变更单,避免下次重新摸索
  • 确认问题出在镜像层面时改构建描述,出在运行参数时改部署配置,不要停在临时容器里
  • 临时容器用完就删,避免堆积大量停止的实例把磁盘和列表都拖乱
  • 调试用的挂载权限尽量只读,防止误删宿主上的文件
  • 涉及凭据的实验不要在交互历史里留下明文,结束后清理历史与临时文件
交互环境里的改动只在当前容器有效。确认某个依赖或配置能解决问题后,要及时写回构建描述或部署配置,否则容器一重建问题就会重现。

易错点

  • 把常驻服务跑在交互会话里,终端一断服务就停,排查半天才发现是启动方式的问题
  • 脚本里加了终端选项导致命令报错,流水线上表现为莫名其妙的失败
  • 进去装了工具、改了文件却没记下来,容器一重建全部丢失,改造要落到镜像或挂载目录
  • 以默认用户进容器验证权限,得出的结论与应用实际运行的权限不一致

数据来源与参考

  • Docker 官方 CLI 参考:docker run(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌