Docker: esecuzione di nano nel contenitore docker


128

Apro una shell interattiva in un contenitore docker in questo modo

sudo docker exec -t -i {container_name} bash

Fin qui tutto bene ma cercare di eseguire nanorisultati in:

Errore durante l'apertura del terminale: sconosciuto.


Quale contenitore è questo? anche che aspetto ha la tua variabile PATH?
Usman Ismail il

Risposte:


196

Penso che questo possa essere correlato al numero Docker n . 9299 .

Esistono alcune soluzioni alternative commentate in questo numero:

  • Esegui il contenitore allocando uno pseudo-TTY (opzione -t).
  • Ambiente Export variabile $ TERM = xterm nel processo di esecuzione del contenitore in exec (es: export TERM=xterm)

Il problema principale sembra essere proprio questo
Pierre de LESPINAY,

2
Allocare uno pseudo-TTY non ha funzionato per me, ma il cambiamento TERMha funzionato.
Nathan Osman,

Questo problema è frustrante a seconda dell'ambiente. Per Centos 8 che utilizza Docker per Windows su Win 10, TERM=xterm-colorsembra funzionare solo per me. risposta serverfault .
mdisibio,

123

Esegui comando: export TERM=xterm


1
tanto per chiarire. senza riavviare il contenitore finestra mobile. apt-get install nano. quindi esporta TERM = xterm. Quindi nano file.txt. (Questo non ci sarà se riavvii il contenitore della finestra mobile.)
Chad,

Funzionava bene, eseguiva solo quel comando e poi nano funzionava, nessun riavvio del contenitore
Ben Winding

36

Puoi aggiungere

ENV TERM xterm

al tuo Dockerfile se utilizzerai l'editor regolarmente. Abbiamo questa impostazione nel nostro contenitore di base, poiché eseguiamo costantemente il debug di cose con vi / emacs.


In qualche modo questo non funziona per me mentre docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"funziona bene. Ho appena aggiunto ENV TERM xtermprima EXPOSEdell'affermazione, è corretto?
Lukas Oppermann,

Non importa, "risolto". Fondamentalmente avevo bisogno di aggiungere il ENV TERM xtermprima del RUNcomando.
Lukas Oppermann,

20
docker exec -it id_container bash
apt-get update
apt-get install nano
export TERM=xterm

10

come $TERMera già impostato xtermma non funziona ancora per me, ecco un modo che ha funzionato:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

Ho fatto una soluzione alternativa, nel mio .bashrc ho aggiunto:

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

In questo caso l'errore non appare più



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.