Docker: Nano im Docker-Container ausführen


128

Ich öffne eine interaktive Shell in einem Docker-Container wie diesem

sudo docker exec -t -i {container_name} bash

So weit so gut, aber der Versuch, nanoErgebnisse zu erzielen, führt zu:

Fehler beim Öffnen des Terminals: unbekannt.


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

Antworten:


196

Ich denke, dies kann mit Docker Issue # 9299 zusammenhängen .

In dieser Ausgabe wurden einige Problemumgehungen kommentiert:

  • Führen Sie den Container aus, der ein Pseudo-TTY zuweist (Option -t).
  • Export - Umgebungsvariable $ TERM = xterm in dem Prozessdurchlauf des Containers in exec (dh export TERM=xterm)

Das Hauptproblem scheint tatsächlich dieses zu sein
Pierre de LESPINAY

2
Das Zuweisen eines Pseudo-TTY hat bei mir nicht funktioniert, das Ändern TERMjedoch.
Nathan Osman

Dieses Problem ist je nach Umgebung frustrierend. Für Centos 8 mit Docker für Windows unter Win 10 TERM=xterm-colorscheint nur für mich zu funktionieren. Serverfehlerantwort .
mdisibio

123

Befehl ausführen: export TERM=xterm


1
nur um klarzustellen. ohne den Docker-Container neu zu starten. apt-get install nano. Exportieren Sie dann TERM = xterm. Dann nano file.txt. (Dies wird nicht in der Nähe sein, wenn Sie Ihren Docker-Container neu starten.)
Chad

Funktionierte gut, führte nur diesen Befehl aus und dann funktionierte Nano, kein Neustart des Containers
Ben Winding

36

Du kannst hinzufügen

ENV TERM xterm

zu Ihrer Docker-Datei, wenn Sie den Editor regelmäßig verwenden. Wir haben diese Einstellung in unserem Basiscontainer, da wir ständig Dinge mit vi / emacs debuggen.


Irgendwie funktioniert das bei mir nicht, solange es gut docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"funktioniert. Ich habe gerade ENV TERM xtermvor der EXPOSEAussage hinzugefügt , ist das richtig?
Lukas Oppermann

Vergiss es, "löste" es. Grundsätzlich musste ich das ENV TERM xtermvor dem RUNBefehl hinzufügen .
Lukas Oppermann

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

10

Wie $TERMbereits festgelegt, xtermaber immer noch nicht für mich funktioniert, ist hier ein Weg, der funktioniert hat:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

Ich habe eine Problemumgehung durchgeführt. In meinem .bashrc habe ich Folgendes hinzugefügt:

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

In diesem Fall wird der Fehler nicht mehr angezeigt



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.