远程登录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
相关推荐
阿童木写作14 分钟前
Python实现Temu图片批量翻译自动化教程
运维·人工智能·python·自动化
@insist1231 小时前
信息系统管理工程师-信息系统运维资源、技术与智能运维核心考点解析
运维·软考·信管·软件水平考试·信息系统管理工程师
木子欢儿1 小时前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
KKKlucifer4 小时前
运营商全域安全运维支撑体系落地实践
运维·安全
EAIReport4 小时前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
会编程的土豆4 小时前
Go 模板初识
linux·运维·服务器
腾讯蓝鲸智云5 小时前
标杆客户实践提炼:CFlow 版本价值流模板实战指南
运维·服务器·自动化·云计算·devops
Yang96116 小时前
自动化射频测试台快速搭建,鼎讯信通 DXSL 矢量信号源模块二次开发集成指南
运维·自动化
隔窗听雨眠6 小时前
生产级Kubernetes集群部署完全指南:从kubeadm到高可用架构落地
容器·架构·kubernetes
小小洋洋7 小时前
OpenWrt 从U盘迁移到内置 eMMC,并完成扩容与 Docker 安装
java·docker·eureka