远程登录docker执行shell报错input is not a terminal问题

背景

最近要远程去k8s docker里面获取信息,于是,写了一个如下的命令,执行完之后,报错了。

bash 复制代码
ssh 192.168.100.2 sudo crictl exec -it xxx.docker /usr/bin/lscpu --online --extended

错误信息如下:

time="2025-07-11T21:00:39+08:00" level=fatal msg="execing command in container failed: input is not a terminal"

问题分析

execing command in container failed: input is not a terminal

翻译一下:在容器中执行命令失败:输入不是终端

表明在尝试通过 SSH 登录到宿主机并在 Docker 容器内执行命令时,系统报告输入不是一个终端(input is not a terminal)。这种情况通常是因为试图以交互模式运行命令,但当前环境不支持这种模式。

这就涉及到docker参数问题。

-it 是 Docker 命令中一个常用的选项组合,用于在容器中启动一个交互式终端(Interactive Terminal)。它实际上是两个选项的缩写:

选项 含义
-i 或 --interactive 保持标准输入(STDIN)打开,允许你向容器发送输入(比如键盘输入)。
-t 或 --tty 分配一个伪终端(pseudo-TTY),让你可以像操作真实终端一样与容器交互。

如果需要进入docker,进行交互式操作,则需要-it,如果不需要,则去掉-it。

解决方法

去掉-it即可。

bash 复制代码
ssh 192.168.100.2 sudo crictl exec xxx.docker /usr/bin/lscpu --online --extended
相关推荐
花海如潮淹20 分钟前
物联网设备管理工具实战:用AR运维镜击穿6.8天修复魔咒
运维·物联网·ar
nbsaas-boot32 分钟前
如何设计一个合理的 Java Spring Boot 项目结构
java·运维·云计算
开开心心就好41 分钟前
电脑桌面整理工具,一键自动分类
运维·服务器·前端·智能手机·pdf·bash·symfony
vortex53 小时前
dockerfile 最佳实践
linux·docker·云技术
神一样的老师3 小时前
Linux下编译海思WS63 SDK全攻略
linux·运维·服务器
陈小唬3 小时前
Docker 拉取镜像并离线迁移至云桌面指南(以Redis为例)
redis·docker·容器
alin、m3 小时前
银河麒麟(Kylin) - V10 GFB高级服务器操作系统ARM64部署昇腾910b训练机以及Docker安装
运维·服务器·docker·arm·kylin
探索云原生3 小时前
K8s 自定义调度器 Part1:通过 Scheduler Extender 实现自定义调度逻辑
docker·云原生·容器·kubernetes·go
咕噜企业签名分发-淼淼3 小时前
内测分发平台应用的异地容灾和负载均衡处理和实现思路
运维·负载均衡
阿巴~阿巴~4 小时前
深入解析:磁盘级文件与内存级(被打开)文件的本质区别与联系
linux·运维·服务器·数据库·缓存