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.


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)

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


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.


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

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"


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



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.