Докер: Запуск нано в контейнері докера


128

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

sudo docker exec -t -i {container_name} bash

Поки що добре, але намагаються досягти nanoрезультатів у:

Помилка відкриття терміналу: невідомо.


Який контейнер це? також як виглядає ваша змінна PATH?
Усман Ісмаїл

Відповіді:


196

Я думаю, це може бути пов’язано з Docker Issue № 9299 .

У цьому випуску прокоментовано декілька вирішень:

  • Запустіть контейнер з виділенням псевдо-TTY (опція -t).
  • Експорт змінної оточення $ TERM = Xterm в процесі запуску контейнера в Exec (тобто: export TERM=xterm)

Основне питання насправді здається саме цим
П'єр де ЛЕСПІНАЙ

2
Виділення псевдо-TTY не працювало для мене, але змінилися TERM.
Натан Осман

Це питання розчаровує залежно від навколишнього середовища. Для Centos 8, що використовує Docker для Windows на Win 10, TERM=xterm-colorмені здається, він працює тільки . відповідь за замовчуванням на сервері .
mdisibio

123

Виконати команду: export TERM=xterm


1
просто для уточнення. без перезавантаження контейнера докера. apt-get install nano. потім експортуємо TERM = xterm. Потім нано файл.txt. (Цього не буде, якщо перезапустити контейнер докера.)
Чад

Добре працював, просто запустив цю команду, а потім нано запрацював, перезапуск контейнера не відбувся
Бен Уіндінг

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.