Linux

Docker附加到curses程序

  • October 5, 2014

我正在嘗試使用docker attach附加到基於curses的圖形過程:

$ docker run --name irssi -it pandrew/irssi irssi

當您使用它從這個過程中分離^P^Q並重新附加時,docker attach irssi它看起來像沒有發生任何事情。但是,該過程確實會重新附加,因為您可以鍵入命令並慢慢地通過觸發重繪來建構圖形界面備份。然而,重新附加後程序的行為很奇怪。

但是,如果您最初在 a 中執行該程序screen,則一切正常:

$ docker run --name irssi -it ${PREVIOUS_IMAGE_PLUS_SCREEN} screen irssi

您可以從容器中分離和重新連接,並且有關 screen 的某些內容會導致 irssi 會話表現良好。irssi 似乎有一定的能力檢查它是否“臟”,並重繪螢幕:https ://github.com/irssi/irssi/blob/master/src/fe-text/irssi.c#L123 .

誰能幫忙解釋這裡發生了什麼?謝謝你。

當您重新附加到全屏應用時,該應用需要重繪。螢幕擅長確定何時重新連接並重新繪製自身 - 通常通過偵聽 SIGWINCH 來指示終端大小已更改。它可能有一些額外的功能來監控它的終端,使它能夠在 irssi 沒有的地方成功。

根據irssi 提示頁面中的最後一條建議,您應該能夠輸入/redrawirssi 來重繪螢幕,或者將其綁定到 ^L with /bind ^L redraw

引用自:https://serverfault.com/questions/633671