Docker exec报 the input device is not a TTY错误

  1. 问题情况

Jenkins中运行下面的命令会报题目中的错误。

docker exec -it test_docker bash -c "bash test.sh"

首先我们先看下docker命令中的各个参数分别是什么意思:

常用参数 解释
-i,–interactive 以交互模式运行容器
-t,–tty 为容器分配一个虚拟终端、伪终端/tty
-d,–detach 在后台模式下运行容器
-u,–user[=“”] 以指定的用户名或UID运行容器中的命令
-w,–workdir=" " 指定命令的工作目录
  1. 解决方法

由于docker命令中-t参数会为输出添加一个伪终端Allocate a pseudo-TTY,而Jenkins无法捕捉到输出,所以只要去掉-t参数即可。

pseudo-TTY:在Linux中,TTY也许是跟终端有关系的最为混乱的术语。TTY是TeleTYpe的一个老缩写。Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大。之后,当计算机只能以批处理方式运行时(当时穿孔卡片阅读器是唯一一种使程序载入运行的方式),电传打字机成为唯一能够被使用的“实时”输入/输出设备。最终,电传打字机被键盘和显示器终端所取代,但在终端或TTY接插的地方,操作系统仍然需要一个程序来监视串行端口。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口。对一个虚拟网络服务器(VNC)来说,一个伪装的TTY(Pseudo-TTY,即假冒的TTY,也叫做“PTY”)是等价的终端。当你运行一个xterm(终端仿真程序)或GNOME终端程序时,PTY对虚拟的用户或者如xterm一样的伪终端来说,就像是一个TTY在运行。“Pseudo”的意思是“duplicating in a fake way”(用伪造的方法复制),它相比“virtual”或“emulated”更能真实的说明问题。而在的计算中,它却处于被放弃的阶段。
tty也是一个Unix命令,用来给出当前终端设备的名称。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。.

出处:

https://www.cnblogs.com/moshuying/p/15233227.html

docker exec -i test_docker bash -c "bash test.sh"

Reference
https://www.xin3721.com/Articlenet/30482.html
https://www.5axxw.com/questions/simple/wa1pmh

相关推荐

  1. Golang 程序运行汇编错误

    2024-01-23 20:42:01       9 阅读
  2. Gitlab 登录422错误,账号密码是正确的

    2024-01-23 20:42:01       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-23 20:42:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-23 20:42:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-23 20:42:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-23 20:42:01       20 阅读

热门阅读

  1. stable diffusion和midjourney怎么选?

    2024-01-23 20:42:01       32 阅读
  2. git rebase/revert/reset 命令用法及场景

    2024-01-23 20:42:01       33 阅读
  3. python 编写dll给c++调用

    2024-01-23 20:42:01       32 阅读
  4. git总结

    2024-01-23 20:42:01       39 阅读
  5. Open CASCADE学习|Aspect_Handle.h头文件

    2024-01-23 20:42:01       29 阅读
  6. C++ Webserver从零开始:基础知识(五)——信号

    2024-01-23 20:42:01       32 阅读
  7. Docker基础使用

    2024-01-23 20:42:01       37 阅读
  8. (十三)Head first design patterns原型模式(c++)

    2024-01-23 20:42:01       37 阅读