Docker:dockerコンテナーでnanoを実行する


128

私はそのようにインタラクティブシェルをドッカーコンテナに開きます

sudo docker exec -t -i {container_name} bash

これまでのところ良好ですが、nano結果を実行しようとすると:

端末を開くときにエラーが発生しました:不明。


これはどのコンテナですか?また、PATH変数はどのように見えますか?
Usman Ismail

回答:


196

これはDocker Issue#9299に関連している可能性があると思います。

その問題でコメントされたいくつかの回避策があります:

  • 疑似TTYを割り当ててコンテナを実行します(オプション-t)。
  • 輸出環境変数$ TERM =幹部で、コンテナのプロセスの実行中のxterm(例:export TERM=xterm

主な問題は実際にこれ
ピエール・ド・レスピーヌ

2
疑似TTYの割り当てはうまくいきませんでしたが、変更TERMはうまくいきました。
Nathan Osman、

この問題は、環境によっては苛立たしいものです。Windows 10でDocker for Windowsを使用するCentos 8の場合TERM=xterm-color、私だけが機能するようです。serverfaultの回答
mdisibio

123

コマンドを実行: export TERM=xterm


1
明確にするために。Dockerコンテナを再起動せずに。apt-getはnanoをインストールします。次にTERM = xtermをエクスポートします。次に、nano file.txt。(Dockerコンテナーを再起動した場合、これは回避されません。)
Chad

正常に機能し、そのコマンドを実行した後、nanoは機能しました。コンテナの再起動はありません
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、2016年

気にしないで、「解決」しました。基本的にENV TERM xtermRUNコマンドの前にを追加する必要がありました。
Lukas Oppermann、2016年


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.