นักเทียบท่า: ใช้นาโนในคอนเทนเนอร์นักเทียบท่า


128

ฉันเปิดเปลือกโต้ตอบลงในคอนเทนเนอร์ docker เช่นนั้น

sudo docker exec -t -i {container_name} bash

จนถึงตอนนี้ดีมาก แต่พยายามที่จะเรียกใช้nanoผลลัพธ์ใน:

เกิดข้อผิดพลาดในการเปิดเทอร์มินัล: ไม่ทราบ


ภาชนะอันนี้คืออะไร? ตัวแปร PATH ของคุณมีหน้าตาเป็นอย่างไร?
Usman Ismail

คำตอบ:


196

ผมคิดว่านี่อาจจะเกี่ยวข้องกับหางฉบับที่ 9299

มีวิธีแก้ไขบางอย่างที่แสดงความคิดเห็นในปัญหานั้น:

  • เรียกใช้คอนเทนเนอร์ที่จัดสรร pseudo-TTY (ตัวเลือก-t)
  • สภาพแวดล้อมที่ส่งออกตัวแปร $ = ระยะ xterm ในกระบวนการทำงานของคอนเทนเนอร์ใน exec (เช่น: export TERM=xterm)

ปัญหาหลักที่จริงแล้วน่าจะเป็นเรื่องนี้
Pierre de LESPINAY

2
การจัดสรรหลอก -TTY ไม่ได้ผลสำหรับฉัน แต่การเปลี่ยนแปลงTERMทำได้
Nathan Osman

ปัญหานี้น่าผิดหวังขึ้นอยู่กับสภาพแวดล้อม สำหรับ Centos 8 โดยใช้ Docker สำหรับ Windows บน Win 10 TERM=xterm-colorดูเหมือนว่าจะใช้ได้สำหรับฉันเท่านั้น คำตอบเซิร์ฟเวอร์ผิดพลาด
mdisibio

123

เรียกใช้ comand: export TERM=xterm


1
เพียงเพื่อชี้แจง โดยไม่ต้องรีสตาร์ทคอนเทนเนอร์นักเทียบท่า apt-get install nano จากนั้นเอ็กซ์พอร์ต TERM = xterm จากนั้น nano file.txt (สิ่งนี้จะไม่เกิดขึ้นหากคุณรีสตาร์ทคอนเทนเนอร์นักเทียบท่า)
Chad

ทำงานได้ดีเพียงแค่เรียกใช้คำสั่งนั้นและนาโนก็ทำงานได้ไม่มีการรีสตาร์ทคอนเทนเนอร์
Ben Winding

36

คุณสามารถเพิ่ม

ENV TERM xterm

ไปที่ Dockerfile ของคุณหากคุณจะใช้โปรแกรมแก้ไขอย่างสม่ำเสมอ เรามีการตั้งค่านั้นในคอนเทนเนอร์พื้นฐานของเราเนื่องจากเราทำการดีบั๊กสิ่งต่างๆด้วย vi / emacs อย่างต่อเนื่อง


อย่างใดนี้ไม่ทำงานสำหรับฉันในขณะที่docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"ทำงานได้ดี ฉันเพิ่งเพิ่มENV TERM xtermก่อนEXPOSEแถลงการณ์นั้นถูกต้องหรือไม่
Lukas Oppermann

ไม่เป็นไร "แก้ไข" มัน โดยทั่วไปฉันต้องการเพิ่มคำสั่งENV TERM xtermก่อนหน้า RUN
Lukas Oppermann


10

ตามที่$TERMกำหนดไว้แล้วxtermแต่ยังไม่ได้ผลสำหรับฉันนี่คือวิธีการทำงาน:docker exec -it [CONTAINER_ID] /bin/bash -c "export TERM=xterm; exec bash"


5

ฉันทำวิธีแก้ปัญหาใน. bashrc ของฉันฉันได้เพิ่ม:

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

ในกรณีนี้ข้อผิดพลาดจะไม่ปรากฏอีกต่อไป



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.