Docker: uruchamianie nano w kontenerze docker


128

Otwieram interaktywną powłokę w kontenerze docker w ten sposób

sudo docker exec -t -i {container_name} bash

Jak dotąd dobrze, ale próba uruchomienia nanoskutkuje:

Błąd podczas otwierania terminala: nieznany.


Który to pojemnik? jak wygląda również zmienna PATH?
Usman Ismail

Odpowiedzi:


196

Myślę, że może to być związane z problemem Docker # 9299 .

Istnieją pewne obejścia omówione w tym numerze:

  • Uruchom kontener, przydzielając pseudo-TTY (opcja -t).
  • Środowisko eksport zmienną $ TERM = xterm w przebiegu procesu kontenera w exec (tj export TERM=xterm)

Wydaje się, że głównym problemem jest właśnie ten
Pierre de LESPINAY

2
Przydzielenie pseudo-TTY nie zadziałało, ale zmiana TERMtak.
Nathan Osman

Ten problem jest frustrujący w zależności od środowiska. W przypadku Centos 8 używającego Dockera dla Windows na Win 10, TERM=xterm-colorwydaje się, że działa tylko dla mnie. odpowiedź błędu serwera .
mdisibio

123

Uruchom komendę: export TERM=xterm


1
żeby się upewnić. bez ponownego uruchamiania kontenera Dockera. apt-get install nano. następnie eksportuj TERM = xterm. Następnie nano plik.txt. (To nie będzie w pobliżu, jeśli zrestartujesz kontener dockera.)
Czad

Działało dobrze, po prostu uruchomiłem to polecenie, a następnie nano działało, bez restartu kontenera
Ben Winding

36

Możesz dodać

ENV TERM xterm

do pliku Dockerfile, jeśli będziesz regularnie używać edytora. Mamy to ustawienie w naszym podstawowym kontenerze, ponieważ stale debugujemy rzeczy za pomocą vi / emacs.


Jakoś to nie działa dla mnie, a docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"działa dobrze. Właśnie dodałem ENV TERM xtermprzed EXPOSEoświadczeniem, czy to prawda?
Lukas Oppermann

Nieważne, „rozwiązałem” to. Zasadniczo musiałem dodać ENV TERM xtermprzed RUNpoleceniem.
Lukas Oppermann


10

jak $TERMjuż zostało ustawione, xtermale nadal nie działa dla mnie, oto sposób, który zadziałał:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

Zrobiłem obejście, w moim .bashrc dodałem:

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

W takim przypadku błąd już się nie pojawia


1

Uruchom to polecenie w swoim kontenerze apk add nano


1
Pracował w kontenerze, który nie miał apt-get ani yum. Dzięki
simesy

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.