Docker Desktop WSL 2 バックエンド を使ってみています。
今のところ、使ってみた!というだけの記事なのですが、いくつか、気になったところを、書いてみようと思います。
WSL2 と Windows 間のファイル共有
WSL2 は Hyper-V の VM として動いていて、ファイルの共有は、相互にマウントすることで行われてます。
Windows のファイルシステムは、WSL2では /mnt/c
に C ドライブがマウントされ、 WSL2のlinux(例 Ubuntu 20.04)のファイルシステムをエクスプローラーから参照するには、\\wsl$\Ubuntu-20.04
です。
ネットワークのファイルシステムのような仕組みになってるんでしょうね。
実際に、WSL2 の terminal で、Windows のファイルシステムのマウント先(/mnt/c 配下)に移動して、そこで docker を実行すると、若干、遅いような気がします。
WSL2で開発の仕事をするんだとしたら、linuxのファイルシステム上で、開発した方がいいです。
vscode にも Remote WSL というのがあって、↑の使い方が、すでに当たり前のようです。
ディレクトリの mv は実際にはコピー
WSL2 を入れて、既存の開発環境を linux 側に移動させようと思って、面倒なので、複数のプロジェクトを mv で一気に移動させようとしたのだけど、エラーになってしまいました。
何が起こったのかと思ったら、Cドライブの空き容量が無くなっているという・・・。
WSL2 <->
Windows間での mv はディレクトリ丸ごとのコピーを行ってるようです。移動元と同じサイズの空き容量がないと、失敗してしまうので、気を付けましょう。
動的メモリ割り当て
Docker Desktop は WSL2 で導入された動的メモリ割り当て機能が活用できます。
WSL2 で Docker を実行するとき、CPU とメモリは、必要量しか使われないため、あらかじめ Docker が使えるメモリ量の設定をしなくてもよいので、より効率的になります。
ただし、↑の状況が、好ましくないときもあります。
私の場合は、Windows 側で Eclipse を動かすときに、問題になりました。
WSL2側で、いろんなDockerコンテナを起動していて、メモリが消費されている状態で、 Eclipse を使うと、なんかモッサリとして、しばらく使い続けてると Eclipse が反応しなくなりました。
WSL2 側でメモリが食われ過ぎて、Windows側のメモリが無くてアプリが重たくなってしまったということだと思います。
Windows 側でも、メモリ食いのアプリケーションを動かすときには、WSL2 側でのメモリ使用量を制限した方がよいです。
WSL2 で最大確保できるメモリサイズは、デフォルトで PC 搭載メモリの 80% になっているようです。
このメモリ割り当ての最大値を小さく設定してみてください。 以下の記事に、そのやり方があります。
https://qiita.com/yoichiwo7/items/e3e13b6fe2f32c4c6120
Docker Desktop WSL 2 バックエンド を使っていくなかで、気になったこと、書き加えていこうと思います。
関連記事
- 2017/05/29 非公開サイトをLet's EncryptなDockerコンテナでお手軽にSSL化する方法 | 開発環境のスピード構築のために アクセスを限定した非公開サイトを運用していて、それをLet's EncryptでSSL化したいけど、コマゴマ面倒くさいという方に、お手軽にできるレシピをご紹介します。
- 2017/03/18 社内の開発環境でDockerイメージをミラーリングする方法 | 開発環境のスピード構築 社内LANの中に、Docker用のプロキシーを配置して、docker pull の実行時間を、最適化する方法をご紹介します。
- 2017/02/21 開発環境を素早く構築する - 自社内での開発に欠かせないスキル プロジェクトの立ち上がりをスムーズにキメるためには、開発環境の整備が、欠かせません。
- 2017/01/07 Docker コンテナ内から他の Docker コンテナに docker exec する Dockerコンテナの中で、Docker Clientは、動くらしくて、ホストOSにある /var/run/docker.sock を共有することで、コンテナ内で、ホストOS側の Docker Client と同じ実行結果になることがわかった。
- 2023/09/25 開発会社が Docker のライセンスに準じて正しく使うために いまさらだけど、開発会社が Docker のライセンスに準拠した、安全な使い方について調べました