Докер: запуск nano в контейнере докера


128

Я открываю интерактивную оболочку в контейнере докера вот так

sudo docker exec -t -i {container_name} bash

Пока все хорошо, но попытка запустить nanoприводит к:

Ошибка открытия терминала: неизвестно.


Что это за контейнер? также как выглядит ваша переменная PATH?
Усман Исмаил

Ответы:


196

Я думаю, это может быть связано с проблемой Docker # 9299 .

В этой проблеме есть некоторые обходные пути:

  • Запустите контейнер, назначающий псевдо-TTY (опция -t).
  • Экспорт переменной окружения $ TERM = Xterm в процессе запуска контейнера в Exec (то есть: export TERM=xterm)

На самом деле, главная проблема, кажется, вот в чем
Пьер де ЛЕСПИНЭ

2
Назначение псевдо-TTY для меня не сработало, а вот изменение - сработало TERM.
Натан Осман,

Эта проблема расстраивает в зависимости от среды. Для Centos 8 с использованием Docker для Windows на Win 10, TERM=xterm-colorпохоже, работает только для меня. ответ serverfault .
mdisibio

123

Запустить команду: export TERM=xterm


1
просто для уточнения. без перезапуска док-контейнера. apt-get install nano. затем экспортируйте TERM = xterm. Затем nano file.txt. (Этого не будет, если вы перезапустите свой докер-контейнер.)
Чад

Сработал нормально, просто выполнил эту команду, а затем nano сработало, без перезапуска контейнера
Бен Виндинг

36

Можете добавить

ENV TERM xterm

в ваш Dockerfile, если вы будете регулярно использовать редактор. У нас есть этот параметр в нашем базовом контейнере, поскольку мы постоянно отлаживаем вещи с помощью vi / emacs.


Как-то у меня это не работает, но docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"работает нормально. Я только что добавилENV TERM xterm перед EXPOSEутверждением, это правильно?
Лукас Опперманн

Неважно, "решил" это. В основном мне нужно было добавить ENV TERM xtermперед RUNкомандой.
Лукас Опперманн


10

так как $TERM уже было установлено, xtermно все еще не работает для меня, вот способ, который сработал:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

Я сделал обходной путь, в моем .bashrc я добавил:

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

В этом случае ошибка больше не появляется



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.