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.