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.


¿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)

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


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.


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

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"


5

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

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

En este caso, el error ya no aparece



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.