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
(这可能是你想要的,因为模拟器是相同的)。
我目前在 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
(这可能是你想要的,因为模拟器是相同的)。