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
するように設定すれば問題なくなる。