DockerでExited(139)が出たときの対処
DockerでExited(139)が出たときの対処
doker runしたときにコンテナが立ち上がらずExited(139)で終了してしまうときの対処メモ。
この終了コードはDocker Desktop上でも確認できる。

環境・事前準備
- Windows10 64bit
- WSL2
- DockerDesktop 4.5.1 (74721)
対処方法
wsl2側で立ち上げているOS側の問題なのでWSL2の設定を変更する.
- windows側のエディタで`%PROFILE%\.wslconfig`ファイルを開く。なければテキストファイルとして作る。
-
次の設定を追加。
[wsl2] kernelCommandLine = vsyscall=emulate - PCを再起動
-
設定変更が適用されたかの確認
> wsl cat /proc/cmdline initrd=\initrd.img panic=-1 pty.legacy_count=0 nr_cpus=12 vsyscall=emulate
`vsyscall=emulate`を確認
ここまでできてればdocker runでコンテナを立ち上げできる.
原因
CentOSなどの古いOSではvsyscallが使われる場合がある。しかしWSL2ではデフォではOFFなのでDocker側で使おうとすると立ち上がらずexitedしてしまう、らしい。
emulateするように設定すれば問題なくなる。