Docker: Chạy nano trong container docker


128

Tôi mở một vỏ tương tác vào một container docker như vậy

sudo docker exec -t -i {container_name} bash

Cho đến nay rất tốt nhưng cố gắng để chạy nanokết quả trong:

Lỗi mở terminal: không xác định.


Đây là container nào? Ngoài ra biến PATH của bạn trông như thế nào?
Usman Ismail

Câu trả lời:


196

Tôi nghĩ rằng điều này có thể liên quan đến vấn đề Docker # 9299 .

Có một số cách giải quyết trong vấn đề đó:

  • Chạy container phân bổ một giả TTY (tùy chọn -t).
  • Biến môi trường xuất $ TERM = xterm trong quy trình của bộ chứa chạy trong exec (tức là export TERM=xterm:)

Vấn đề chính thực sự có vẻ là vấn đề này
Pierre de LESPINAY

2
Phân bổ một giả TTY không làm việc cho tôi nhưng thay đổi TERMđã làm.
Nathan Osman

Vấn đề này là bực bội tùy thuộc vào môi trường. Đối với Centos 8 sử dụng Docker cho Windows trên Win 10, TERM=xterm-colordường như chỉ hoạt động với tôi. máy chủ trả lời lỗi .
mdisibio

123

Chạy đồng hành: export TERM=xterm


1
chỉ cần làm rõ. mà không cần khởi động lại container docker. apt-get cài đặt nano. sau đó xuất TATE = xterm. Sau đó, tập tin nano. (Điều này sẽ không xuất hiện nếu bạn khởi động lại container docker của mình.)
Chad

Hoạt động tốt, chỉ cần chạy lệnh đó và sau đó nano hoạt động, không khởi động lại container
Ben Winding

36

Bạn có thể thêm

ENV TERM xterm

vào Dockerfile của bạn nếu bạn sẽ sử dụng trình soạn thảo thường xuyên. Chúng tôi có cài đặt đó trong thùng chứa cơ sở của mình, vì chúng tôi liên tục gỡ lỗi mọi thứ với vi / emacs.


Bằng cách nào đó, điều này không làm việc cho tôi trong khi docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"hoạt động tốt. Tôi chỉ cần thêm ENV TERM xtermtrước khi EXPOSEtuyên bố, điều đó có đúng không?
Lukas Oppermann

Nevermind, "giải quyết" nó. Về cơ bản tôi cần thêm lệnh ENV TERM xtermtrước RUNlệnh.
Lukas Oppermann


10

như $TERMđã được đặt thành xtermnhưng vẫn không hoạt động với tôi, đây là một cách làm việc:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

Tôi đã làm một cách giải quyết, trong .bashrc của tôi, tôi đã thêm:

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

Trong trường hợp này, lỗi không còn xuất hiện nữa



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.