Docker: Ejecución de nano en el contenedor docker

128

Abro un shell interactivo en un contenedor acoplable así

sudo docker exec -t -i {container_name} bash

Hasta ahora todo bien, pero tratando de ejecutar nanoresultados en:

Error al abrir terminal: desconocido.

Myles McDonnell
fuente
¿Qué contenedor es este? ¿Cómo se ve tu variable PATH?
Usman Ismail el

Respuestas:

196

Creo que esto puede estar relacionado con el número Docker # 9299 .

Hay algunas soluciones alternativas comentadas en ese tema:

  • Ejecute el contenedor asignando un pseudo-TTY (opción -t).
  • Ambiente Exportación variable $ TERM = xterm en ejecución de proceso del recipiente en exec (es decir: export TERM=xterm)
Javier Cortejoso
fuente
El problema principal parece ser este
Pierre de LESPINAY
2
La asignación de un pseudo-TTY no funcionó para mí, pero el cambio TERMsí.
Nathan Osman
Este problema es frustrante según el entorno. Para Centos 8 que usa Docker para Windows en Win 10, solo TERM=xterm-colorparece funcionar para mí. respuesta por defecto del servidor .
mdisibio
123

Ejecute comand: export TERM=xterm

Naresh Walia
fuente
1
solo para aclarar. sin reiniciar el contenedor acoplable. apt-get install nano. luego exportar TERM = xterm. Entonces nano file.txt. (Esto no estará disponible si reinicia su contenedor acoplable.)
Chad
Funcionó bien, solo ejecuté ese comando y luego nano funcionó, sin reinicio del contenedor
Ben Winding
36

Puedes añadir

ENV TERM xterm

a su Dockerfile si va a usar el editor regularmente. Tenemos esa configuración en nuestro contenedor base, ya que constantemente estamos depurando cosas con vi / emacs.

seanmcl
fuente
De alguna manera esto no funciona para mí mientras docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"funciona bien. Acabo de agregar ENV TERM xtermantes de la EXPOSEdeclaración, ¿es correcto?
Lukas Oppermann
No importa, lo "resolvió". Básicamente, necesitaba agregar ENV TERM xtermantes del RUNcomando.
Lukas Oppermann
20
docker exec -it id_container bash
apt-get update
apt-get install nano
export TERM=xterm
alfonsoolavarria
fuente
10

como $TERMya estaba configurado, xtermpero todavía no funciona para mí, aquí hay una manera que funcionó:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"

pHiL
fuente
5

Hice una solución, en mi .bashrc agregué:

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

En este caso, el error ya no aparece

soñador
fuente
0

Ejecute este comando en su contenedor apk add nano

Rawand Saeed
fuente