Docker:在Docker容器中运行Nano


128

我像这样将交互式外壳打开到Docker容器中

sudo docker exec -t -i {container_name} bash

到目前为止很好,但是尝试运行会nano导致:

打开终端时出错:未知。


这是哪个容器?您的PATH变量也是什么样的?
Usman Ismail 2015年

Answers:


196

我认为这可能与Docker Issue#9299有关

该问题中有一些解决方法:

  • 运行分配伪TTY的容器(选项-t)。
  • 出口环境变量$ TERM = xterm的容器的过程中运行的exec(即:export TERM=xterm

实际上,主要问题似乎是这个
Pierre de LESPINAY 2015年

2
分配伪TTY对我不起作用,但进行更改TERM就可以了。
内森·奥斯曼

根据环境,此问题令人沮丧。对于在Win 10上使用Windows的Docker的Centos 8 TERM=xterm-color来说,对我来说似乎只适用。serverfault答案
mdisibio

123

运行命令: export TERM=xterm


1
只是为了澄清。无需重启docker容器。apt-get install nano。然后导出TERM = xterm。然后是nano file.txt。(如果重新启动Docker容器,则不会出现这种情况。)
Chad

工作正常,只需运行该命令,然后运行nano,就不会重新启动容器
Ben Winding

36

你可以加

ENV TERM xterm

如果您将定期使用编辑器,则将其添加到您的Dockerfile。由于我们不断使用vi / emacs调试内容,因此我们在基本容器中有了该设置。


某种程度上,这对我不起作用,但docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"效果很好。我只是ENV TERM xtermEXPOSE声明之前添加,对吗?
卢卡斯·欧珀曼

没关系,“解决”了它。基本上,我需要ENV TERM xtermRUN命令之前添加。
卢卡斯·欧珀曼


10

正如$TERM已经设置xterm但仍然不适合我的方法,这是一种有效的方法:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

我做了一个解决方法,在我的.bashrc文件中添加了:

alias nano='export TERM=xterm && nano'

在这种情况下,错误不再出现



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.