Docker: exécution de nano dans un conteneur Docker

128

J'ouvre un shell interactif dans un conteneur docker comme ça

sudo docker exec -t -i {container_name} bash

Jusqu'ici tout va bien mais essayer d'exécuter les nanorésultats:

Erreur lors de l'ouverture du terminal: inconnu.

Myles McDonnell
la source
De quel conteneur s'agit-il? aussi à quoi ressemble votre variable PATH?
Usman Ismail

Réponses:

196

Je pense que cela peut être lié au problème Docker # 9299 .

Il y a quelques solutions de contournement commentées dans ce problème:

  • Exécutez le conteneur en allouant un pseudo-TTY (option -t).
  • Exportation variable d' environnement $ TERM = xterm dans la course de processus du conteneur dans exec (ex: export TERM=xterm)
Javier Cortejoso
la source
Le problème principal semble en fait être celui-ci
Pierre de LESPINAY
2
L'attribution d'un pseudo-ATS n'a pas fonctionné pour moi, mais le changement TERMa fonctionné.
Nathan Osman
Ce problème est frustrant selon l'environnement. Pour Centos 8 utilisant Docker pour Windows sur Win 10, cela ne TERM=xterm-colorsemble fonctionner que pour moi. réponse serverfault .
mdisibio le
123

Exécutez la commande: export TERM=xterm

Naresh Walia
la source
1
juste pour clarifier. sans redémarrer le conteneur Docker. apt-get install nano. puis exportez TERM = xterm. Puis nano file.txt. (Ce ne sera pas là si vous redémarrez votre conteneur docker.)
Tchad
A bien fonctionné, j'ai juste exécuté cette commande, puis nano a fonctionné, pas de redémarrage du conteneur
Ben Winding
36

Vous pouvez ajouter

ENV TERM xterm

à votre Dockerfile si vous comptez utiliser l'éditeur régulièrement. Nous avons ce paramètre dans notre conteneur de base, car nous débogage constamment des choses avec vi / emacs.

seanmcl
la source
D'une manière ou d'une autre, cela ne fonctionne pas pour moi alors que cela docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"fonctionne bien. Je viens d'ajouter ENV TERM xtermavant la EXPOSEdéclaration, est-ce exact?
Lukas Oppermann
Nevermind, "résolu". Fondamentalement, j'avais besoin d'ajouter le ENV TERM xtermavant la RUNcommande.
Lukas Oppermann
20
docker exec -it id_container bash
apt-get update
apt-get install nano
export TERM=xterm
Alfonsoolavarria
la source
10

comme cela $TERMétait déjà prévu xtermmais ne fonctionnant toujours pas pour moi, voici une méthode qui a fonctionné:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"

pHiL
la source
5

J'ai fait une solution de contournement, dans mon .bashrc j'ai ajouté:

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

Dans ce cas, l'erreur n'apparaît plus

rêveur de travail
la source
0

Exécutez cette commande dans votre conteneur apk add nano

Rawand Saeed
la source