2015-01-07 23 views
109

tôi mở một shell tương tác vào một container Docker như vậyChạy nano vào bình chứa Docker

sudo docker exec -t -i {container_name} bash 

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

Lỗi mở thiết bị đầu cuối: unknown.

+0

Thùng chứa nào đây? cũng biến PATH của bạn trông như thế nào? –

Trả lời

173

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

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

  • Chạy container phân bổ một pseudo-TTY (tùy chọn -t).
  • môi trường xuất khẩu biến $ TERM = xterm trong của container quá trình chạy trong exec (nghĩa là .: export TERM=xterm)
+0

Vấn đề chính thực sự có vẻ là [this one] (https://github.com/docker/docker/issues/8755) –

+2

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

+0

Điều này làm việc cho tôi trên ubuntu 10.04 +1. – Cyclonecode

32

Bạn có thể thêm

ENV TERM xterm 

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

+0

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" xuất khẩu TERM = xterm; exec bash "' hoạt động tốt. Tôi vừa thêm 'ENV TERM xterm' trước câu lệnh' EXPOSE', đúng không? –

+0

Nevermind, "đã giải quyết" nó. Về cơ bản, tôi cần thêm 'ENV TERM xterm' trước lệnh' RUN'. –

+0

Công việc này tốt cho tôi. –

114

Run COMAND: export TERM=xterm

+1

chỉ để làm rõ. mà không cần khởi động lại vùng chứa docker. apt-get cài đặt nano. sau đó xuất TERM = xterm. Sau đó, tập tin nano.txt. (Điều này sẽ không xung quanh nếu bạn khởi động lại vùng chứa docker của bạn.) – Chad

+0

Làm việc tốt, chỉ cần chạy lệnh đó và sau đó nano làm việc, không có khởi động lại container –

9

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

3
docker exec -it id_container bash 
apt-get update 
apt-get install nano 
export TERM=xterm 
3

Tôi đã làm một workaround, trong .bashrc của tôi tôi đã thêm:

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

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

Các vấn đề liên quan