背景
最近要遠程去k8s docker里面獲取信息,于是,寫了一個如下的命令,執行完之后,報錯了。
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即可。
ssh 192.168.100.2 sudo crictl exec xxx.docker /usr/bin/lscpu --online --extended