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.