0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【対処/対策】Windows のコンソールで Docker やってて Ctrl+z 押してしまったら

Last updated at Posted at 2022-05-21

Windows のコンソールで Docker やってて Ctrl+z 押してしまったら

...しまったら、Dockerコンテナからexitしてしまいます。

私がした対処と対策をメモしておきます。
同じことをして対処に困っている方で、かつexit前にtmuxを使っていなかった場合は、この先を読んでも意味ないかもしれません。
(ただ、tmuxはお勧めです。今回のような切断だけでなく、sshが切断されたときにも同じやり方で復帰できます。)

  • 対処に必要なもの : tmux
  • 対策に必要なもの : Cmder

対処

dockerコンテナ上でtmuxを使っていました。
なので、tmuxのセッションが残っていたため復帰できました。

下記、復帰の方法です(tmuxのプレフィクスがctrl+bであるという前提です)。

  1. コンテナにログインする
  2. tmuxを起動する
  3. コマンド入力 ctrl+b -> s
  4. 表示されるセッションリストから上下キーでexitしてしまったセッションが残っている確認する(e.g. vim中にexitしてしまったらvimの画面が開いているセッションが残っているはずです)
  5. exitしてしまったセッションが見つかったら、それをEnterで選択する

以上で復帰できるはずです。

対策

対策には、Cmderのホットキー機能へのマクロ割り当て機能を使います。

ctrl+zに対して、なにかマクロを割り当てるとCmderがctrl+z入力を受け取って、dockerへの入力を遮断してくれます。

下記に設定例をサクッと書いておきます(公式サイトに詳しい説明があります)。

  1. Cmderの設定を開く
  2. Key & Macro を開く
  3. デフォルト値がAll hotkeysになっているプルダウンから、Macrosを選択する
  4. Choose hotkey欄をクリックしてから、キーボードでctrl+zを押さえる
  5. GUI Macro欄に次の文字列を入力する MsgBox("dockerコンテナからのexitを防止しました","ctrl+zを遮断")
  6. 設定を保存する

以上で対策となります。
設定が終わったら正しく設定できているかどうか、ctrl+zを押して確かめてみるといいかもしれません。

参考

https://conemu.github.io/en/SettingsHotkeys.html
https://conemu.github.io/en/GuiMacro.html#MsgBox

あとがき

この対策方法を望ましいものとは感じていません。
ctrl+zをCmderで使えなくなります。
本来このような挙動(ctrl+zでexit)をすることをdocker作っている側も想定していないようです。
これについてのgithubのイシューがありますが、docker on linuxならこうした挙動はないようです。
このイシューは放置されているようですが、困っている人はそこそこ存在するようです。修正が楽しみです。
https://github.com/docker/for-win/issues/7811

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?