2015-01-07 25 views
109

Ich öffne eine interaktive Shell in einen Behälter Docker wie soLauf nano in Docker Behälter

sudo docker exec -t -i {container_name} bash 

So weit so gut, aber versuchen nano Ergebnisse in auszuführen:

Fehler beim Öffnen der Klemme: unbekannt.

+0

Welcher Container ist das? Wie sieht Ihre PATH-Variable aus? –

Antwort

173

Ich denke, das kann mit Docker Issue #9299 verwandt werden.

Es gibt einige Workarounds in dieser Frage kommentiert:

  • Führen Sie den Behälter mit einer pseudo-TTY (Option -t) zuordnet.
  • Export Umgebungsvariable $ TERM = xterm im Prozessablauf in exec des Containers (d.h .: export TERM=xterm)
+0

Das Hauptproblem scheint tatsächlich [dieses] zu sein (https://github.com/docker/docker/issues/8755) –

+2

Das Zuweisen eines Pseudo-TTY funktionierte nicht für mich, aber das Ändern 'TERM' tat. –

+0

Dies funktionierte für mich auf Ubuntu 10.04 +1. – Cyclonecode

32

Sie

ENV TERM xterm 

zu Ihrem Dockerfile hinzufügen können, wenn Sie den Editor regelmäßig verwenden. Wir haben diese Einstellung in unserem Basiscontainer, da wir ständig Dinge mit vi/emacs debuggen.

+0

Irgendwie funktioniert das nicht für mich, während 'docker exec -it [CONTAINER_ID]/bin/bash -c" exportieren TERM = xterm; exec bash "' funktioniert gut. Ich habe gerade 'ENV TERM xterm' vor der' EXPOSE' Anweisung hinzugefügt, ist das korrekt? –

+0

Nevermind, "löste" es. Grundsätzlich musste ich vor dem 'RUN'-Befehl den 'ENV TERM xterm' hinzufügen. –

+0

Das funktioniert gut für mich. –

114

Run comand: export TERM=xterm

+1

nur um zu klären. ohne den Andock-Container neu zu starten. apt-get installieren Sie nano. dann exportiere TERM = xterm. Dann nano Datei.txt. (Dies wird nicht in der Nähe sein, wenn Sie Ihren Andock-Container neu starten.) – Chad

+0

Hat gut funktioniert, nur diesen Befehl ausgeführt und dann hat Nano funktioniert, kein Neustart des Containers –

9

als $TERM bereits xterm gesetzt wurde, aber für mich immer noch nicht funktioniert, hier ist ein Weg, das funktioniert: docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"

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

ich eine Abhilfe in meinem .bashrc tat, ich habe hinzugefügt:

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

In diesem Fall den Fehler nicht länger erscheinen