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.

Myles McDonnell
źródło
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)
Javier Cortejoso
źródło
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

Naresh Walia
źródło
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.

seanmcl
źródło
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
20
docker exec -it id_container bash
apt-get update
apt-get install nano
export TERM=xterm
alfonsoolavarria
źródło
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"

pHiL
źródło
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

workdreamer
źródło
1

Uruchom to polecenie w swoim kontenerze apk add nano

Rawand Saeed
źródło
1
Pracował w kontenerze, który nie miał apt-get ani yum. Dzięki
simesy