2

我目前在 Docker 容器中设置了一个 TOR 中继,以便在线快速部署。一切运行良好,并且 ARM(一个 TOR 监控应用程序)已安装并可以使用。

当我在容器中执行 bash shell 以运行 ARM(使用 NCurses 的 Python 应用程序)时,ARM 抛出以下错误:

curses.error: setupterm: 找不到终端

我启动容器,一切正常,然后我执行一个 shell,如下所示:

docker exec -t -i container_id /bin/bash

拥有 bash shell 后,我运行导致上述错误的 ARM 应用程序。

谷歌搜索该问题表明 TERM 环境变量可能不正确(echo $TERM哑巴返回)。Docker 中的t标志应该设置一个 TTY。

我假设其他人已经在 Docker 容器中遇到过这个问题,但我对如何解决这个问题一头雾水。谷歌搜索并没有提供任何 Docker 特定的内容。

帮助!

4

2 回答 2

3

我不确定如何持续解决这个问题。但是一旦在终端会话中输入

export TERM=xterm

应该这样做。

于 2015-02-27T16:42:15.433 回答
0

Docker 文档说它会自动分配TERM(可能是版本问题);但如果您添加-e TERM到命令行,则 TERM 的值将与父 shell 中的值匹配。

您的新命令如下所示:

docker exec -ti -e TERM container_id /bin/bash

现在您会发现TERM容器内部将匹配容器TERM外部(这可能是您想要的,因为模拟器是相同的)。

于 2016-08-04T17:46:16.763 回答