Docker-logo

WSL2でdockerを使う際のトラブルシュート

WSL2でdockerを使ったときに詰まりがちなトラブルの対処法についてメモしておきます。

なお以下の記事は、Docker Desktop for Windowsがインストールされていて起動している前提で、使用しているディストリビューションは「Ubuntu 20.04.5 LTS」です。

記載した対処法については自分の環境では上手くいったというものであって、安全性を保証できるものではないので自己責任で使用してください。

できれば、WSLイメージ(デストロ)のエクスポートを行いバックアップを作った上で試すのをお勧めします。

症状1:そもそもdcokerコマンドが入っていない

dockerコマンドを実行しようとすると以下のようなエラーメッセージがでる。

さらに「このデストロにはdockerコマンドが見つから無いのでDocker Desktopの設定でWSLとの統合を有効にしろ」とエラーメッセージが出るが、統合することができない。

(設定画面のUse the WSL 2 based engineにチェックは入っているがコマンドを実行できない)

症状2:dockerコマンドは入っているがdockerサービスが起動していない

dockerコマンドを実行すると以下のようなエラーがでる。

さらに、dockerサービスを起動しようとすると下記のようなエラーが出てサービスを起動することができない

症状3:docker runを実行するとパーミッションエラーが出る

dockerコマンドは存在し、dockerサービスも問題なく起動しているのに、コンテナを動かそうとするとパーミッションエラーがでてしまう。



対策1:dockerを使うWSLのデストロを規定(デフォルト)に設定するDocker Desktop をWSLのデストロで使用するためには、デフォルトになっている必要があります。

wsl –list –verboseコマンドを使って、dockerを使いたいデストロがデフォルトになっているか確認しましょう。

例)

アスタリスクが付いているのがデフォルト設定になっているデストロになります。デフォルト設定以外のデストロの中ではdockerを利用することができません。

例えば、devの中でdockerを使いたい場合は以下コマンドで変更します。

対策2:docker-ceをインストールしてみる

上記の方法を試しても動かない場合に、docker-ceを直接デストロの中でインストールしてみます。この方法を行う場合は、WSLのエクスポートコマンドを使ってバックアップを取ってください。

途中、「WSLならDocker Desktop を使った方がいいよー」といった警告がでますが、そのまま放置しインストールします。

インストールが終わったら、dockerコマンドがインストールされているか、dockerサービスが起動するかためします。

手動でdockerをインストールしても使用できるのは、規定(デフォルト)のデストロのみです。サービスを起動すると症状3が現れる場合は、対策1を行ってください。