Docker 容器中的 NCurses

NCurses in Docker Container

我目前在 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 返回 dumb)。 Docker 中的 t 标志应该设置 TTY。

我假设其他人遇到过 Docker 容器的这个问题,但我不知道如何解决这个问题。谷歌搜索没有找到任何 Docker 具体信息。

求助!

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

export TERM=xterm

应该做。

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

中的值匹配

您的新命令如下所示:

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

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