DockerでWSL2を使うと上手くいかなかった話

2021/05/17

自分は Windows ユーザなので Laravel の開発環境には「Docker Desktop for Windows」を使っています。

Docker Desktop for Windows をインストールするとデフォルトでは「Install required Windows components for WSL2」の行にチェックボックスが付いています。

恐らく WSL2 推奨という意味なのでしょうね。

【 WSL2 とは? 】
・Windows Subsystem for Linux2
・Windows10上で、お手軽にLinuxで遊ぶことができる

しかし、チェックしたまま Docker をインストールすると、開発コンテナを開くたびに、以下のように警告が出るようになります。

この状態でブラウザを開いて画面プレビューを確認すると、とても動きが遅かったりします。

(※また、一部の機能が動きませんでした。)

調べてみると、WSL2 では Windows ファイルシステム上に保存したファイルに WSL 上のコマンドからアクセスするのはかなり遅いし一部の機能は動かないみたいです。

WSL2 を使う場合、WSL上で作ったLinuxファイルシステムのディレクトリを紐づけするといいみたいです。


# docker-compose.yml
# ローカルのディレクトリとコンテナ上のディレクトリのリンク設定
# 以下はWindows上のディレクトリで紐づけしているが一応、動く
:
volumes:
  - ./src:/var/www/html

今回はこの解決方法をエントリーします。

 

解決方法

ネットで検索すると "Windowsファイルシステムではなく、WSL上で作ったLinuxファイルシステムのディレクトリを開発コンテナにバインドマウントすればいい" みたいなことが書かれていました。

ただ、このやり方は自分にとって難しく、別の方法を考えました。

行きついた方法が「WSL2を使わない」という方法です。

手順は以下の通り。

 

① Docker Desktopメニューをクリック

 

② [setting] を選択し [setting] ダイアログの [General] タブを表示

 

③ [Use the WLS2 based Engine] の行のチェックボックスをはずす

 

④ コンテナを再起動

# 起動していたらいったん止める
$ docker-compose down

# 起動
$ docker-compose up -d

 

⑤ 動作確認

ブラウザを開いて「127.0.0.1」にアクセス。

以下のようにすぐに表示されていればOK。

 
以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築