Docker: executando o nano no contêiner do docker

128

Abro um shell interativo em um contêiner de encaixe

sudo docker exec -t -i {container_name} bash

Até agora tudo bem, mas tentar executar nanoresultados em:

Erro ao abrir o terminal: desconhecido.

Myles McDonnell
fonte
Qual container é esse? também como é a sua variável PATH?
precisa saber é o seguinte

Respostas:

196

Acho que isso pode estar relacionado ao Docker Issue # 9299 .

Existem algumas soluções alternativas comentadas nesse problema:

  • Execute o contêiner alocando um pseudo-TTY (opção -t).
  • Ambiente exportação variável $ TERMO = xterm em funcionamento o processo do recipiente em exec (ou seja: export TERM=xterm)
Javier Cortejoso
fonte
O principal problema, na verdade, parece ser este
Pierre de LESPINAY
2
Alocar um pseudo-TTY não funcionou para mim, mas a mudança TERMfuncionou.
Nathan Osman
Esse problema é frustrante, dependendo do ambiente. Para o Centos 8 usando o Docker para Windows no Windows 10, apenas TERM=xterm-colorparece funcionar para mim. resposta serverfault .
mdisibio 02/04
123

Execute o comando: export TERM=xterm

Naresh Walia
fonte
1
Só para esclarecer. sem reiniciar o contêiner do docker. apt-get install nano. exporte TERM = xterm. Então nano file.txt. (Isto não será em torno de se você reiniciar o recipiente janela de encaixe.)
Chad
Funcionou bem, apenas correu esse comando e, em seguida, nano trabalhou, não restart recipiente
Ben enrolamento
36

Você pode adicionar

ENV TERM xterm

para o seu Dockerfile se você usar o editor regularmente. Temos essa configuração em nosso contêiner base, pois estamos constantemente depurando coisas com o vi / emacs.

seanmcl
fonte
De alguma forma, isso não está funcionando para mim enquanto docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"funciona bem. Acabei de adicionar ENV TERM xtermantes da EXPOSEdeclaração, está correto?
Lukas Oppermann
Deixa pra lá, "resolveu". Basicamente, eu precisava adicionar o ENV TERM xtermantes do RUNcomando.
Lukas Oppermann 07/10
20
docker exec -it id_container bash
apt-get update
apt-get install nano
export TERM=xterm
alfonsoolavarria
fonte
10

como $TERMjá foi definido, xtermmas ainda não está funcionando para mim, aqui está uma maneira que funcionou:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"

pHiL
fonte
5

Eu fiz uma solução alternativa, no meu .bashrc eu adicionei:

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

Nesse caso, o erro não aparece mais

sonhador
fonte
0

Execute este comando no seu contêiner apk add nano

Rawand Saeed
fonte