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.

Myles McDonnell
quelle
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)
Javier Cortejoso
quelle
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

Naresh Walia
quelle
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.

seanmcl
quelle
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
Alfonsoolavarria
quelle
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"

pHiL
quelle
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

Arbeitsträumer
quelle
0

Führen Sie diesen Befehl in Ihrem Container aus apk add nano

Rawand Saeed
quelle