Docker: Menjalankan nano dalam wadah buruh pelabuhan

128

Saya membuka shell interaktif ke dalam wadah buruh pelabuhan seperti itu

sudo docker exec -t -i {container_name} bash

Sejauh ini bagus tetapi mencoba menjalankan nanohasil dalam:

Kesalahan membuka terminal: tidak diketahui.

Myles McDonnell
sumber
Wadah apa ini? juga seperti apa variabel PATH Anda?
Usman Ismail

Jawaban:

196

Saya pikir ini dapat dikaitkan dengan Docker Issue # 9299 .

Ada beberapa solusi yang dikomentari dalam masalah itu:

  • Jalankan wadah yang mengalokasikan pseudo-TTY (opsi -t).
  • Lingkungan Ekspor variabel $ TERM = xterm dalam proses wadah run di exec (yaitu: export TERM=xterm)
Javier Cortejoso
sumber
Masalah utama sebenarnya adalah yang ini
Pierre de LESPINAY
2
Mengalokasikan pseudo-TTY tidak bekerja untuk saya, tetapi mengubah TERMtidak.
Nathan Osman
Masalah ini membuat frustrasi tergantung pada lingkungan. Untuk Centos 8 menggunakan Docker untuk Windows pada Win 10, TERM=xterm-colorsepertinya hanya berfungsi untuk saya. jawaban serverfault .
mdisibio
123

Jalankan perintah: export TERM=xterm

Naresh Walia
sumber
1
Hanya untuk mengklarifikasi. tanpa memulai kembali wadah buruh pelabuhan. apt-get install nano. lalu ekspor TERM = xterm. Kemudian nano file.txt. (Ini tidak akan ada jika Anda me-restart wadah buruh pelabuhan Anda.)
Chad
Bekerja dengan baik, jalankan saja perintah itu dan kemudian nano berhasil, tidak ada wadah restart
Ben Winding
36

Anda dapat menambahkan

ENV TERM xterm

ke Dockerfile Anda jika Anda akan menggunakan editor secara teratur. Kami memiliki pengaturan itu di wadah dasar kami, karena kami terus-menerus men-debug berbagai hal dengan vi / emacs.

seanmcl
sumber
Entah bagaimana ini tidak bekerja untuk saya sementara docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"berfungsi dengan baik. Saya baru saja menambahkan ENV TERM xtermsebelum EXPOSEpernyataan, apakah itu benar?
Lukas Oppermann
Nevermind, "memecahkannya". Pada dasarnya saya perlu menambahkan ENV TERM xtermsebelum RUNperintah.
Lukas Oppermann
20
docker exec -it id_container bash
apt-get update
apt-get install nano
export TERM=xterm
alfonsoolavarria
sumber
10

seperti $TERMyang sudah diatur xtermtetapi masih tidak bekerja untuk saya, berikut adalah cara yang bekerja:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"

pHl
sumber
5

Saya melakukan solusi, di .bashrc saya, saya telah menambahkan:

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

Dalam hal ini kesalahan tidak lagi muncul

workdreamer
sumber
0

Jalankan perintah ini di wadah Anda apk add nano

Rawand Saeed
sumber