0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacユーザーがWindowsでDockerを使おうとして、WSL is finishing upgrading... に沼った話

Posted at

はじめに

普段はMacを使って開発していますが、業務でWindows 11を使用する機会がありました。その際、Windows環境でDockerを使えるようにするまでに、想像以上にWSL周りで苦戦してしまいました。その経緯を失敗談として、この記事で共有したいと思います。

結論

WindowsでDockerを使いたい場合、まずは公式のDocker Desktopをインストールするのが正解です。
インストーラーが自動でWSL2をセットアップしてくれるので、基本的には初心者が自分で wsl --installwsl --set-default-version 2 から実行する必要はありません。

私はそれを知らずにWSL周りをいじり倒して数時間溶かし、最終的にはOSを再インストールする羽目になりました…。

ハマってから解決に至るまで

WSLをとりあえずインストール

WindowsでDockerを動かすにはWSL2が必要ということはなんとなく知っていました。
なので、WindowsでDockerを使うまでの手順を十分に確認しないまま、以下のようにしてWSLを入れました。

wsl --install

続いて、こちらも実行しました。

wsl --set-default-version 2

このコマンドは「WSLの既定バージョンを2に設定する」という意味です。WindowsではWSL1とWSL2があり、WSL2はより本物のLinuxに近い仕組みです。
Docker Desktopが動作するのはWSL2なので、上記を実行しておきました。

Windows11では wsl --install で最初からWSL2が既定になるので省略可能みたいです。

これで、wslコマンドが使えるようになり「よし、準備できた!」と思いました。

wslコマンドが謎の状態に

ところが、この後に

wsl -v
wsl --update

などのWSLコマンドを実行すると、「アップグレードを終了しています…」 という表示が出るだけで処理が進まなくなりました。

困ったときの定番として紹介されていた、

wsl --shutdown

も効果なし。Windows Updateを実行しても改善せず。

エラーメッセージで検索しても同じ事象に関する情報はほとんどなく、それっぽい対処法を片っ端から試しましたが、結局どれもダメでした。

最終手段: OSの再インストール

状況を打開できず数時間が経過。この時点でPCには大したデータが入っていなかったので、思い切ってWindows 11自体を再インストールすることにしました。最終手段です...。

結局、Docker Desktopが正解だった

OS再インストール後、公式サイトからDocker Desktopをダウンロードしました。そして、インストーラーの指示に従って進めていくと、WSL2を使用するかどうかの設定項目がありました。どうやら、この設定項目にチェックを入れておくと自動的にWSL2をセットアップしてくれるようです。インストール終了後、あっさりDockerが動くようになりました。

学んだこと

今回の経験で分かったのは次のことです。

  • WindowsでDockerを使いたいなら、まずは Docker Desktopを公式サイトからインストールするのが一番早い
  • 自分で wsl --installwsl --set-default-version 2 を実行してもよいが、初心者がやると予期しない事態にハマる可能性がある
  • 何かを新たにインストールする際は、公式ドキュメントなど信頼できる情報を参照して作業を進める

Dockerを使うまでのおすすめ手順(初心者向け)

もしこれからWindowsでDockerを使いたいなら、以下の流れで進めるのがおすすめです。

  1. Docker Desktop公式サイトからインストーラーをダウンロード
  2. インストーラーを実行する(WSL2が自動で導入される)
  3. インストール完了後、docker --version で動作確認
  4. (必要に応じて)WLSのデフォルトディストリビューションをUbuntuなどに変更する

これだけでDockerの開発環境が整うかと思います。

Windows 11にDocker Desktopを入れる手順(令和5年最新版)の記事が非常にわかりやすいので、Windows 11でDockerの開発環境を構築する際は参考にしてみてください。

【おまけ】初心者あるある: Windowsディレクトリにプロジェクトファイルを置いてしまう問題

WSL2 × Docker Desktop を使い始めた初心者がよくハマるのが、プロジェクトの置き場所です。

Windowsディレクトリに置いた場合

例えば C:\Users\<ユーザー名>\myapp のように Windowsのディレクトリ配下 にプロジェクトを置いて、そのままアプリケーションを起動すると…

  • 動作が異常に重い
  • ビルドや依存パッケージのインストールに時間がかかる

といった現象が起こります。

なぜ重いのか?

  • WindowsのNTFSとLinux のファイルシステムは仕組みが異なる
  • Windows側のファイルをWSL2からアクセスすると、ファイルI/Oごとに変換処理が入る
  • そのため、大量のファイル操作(例:npm installbundle install)で極端に遅くなる

解決策: Linuxファイルシステムに置く

プロジェクトは WSL2のLinuxファイルシステム配下 に置くのがベストです。

Ubuntu をインストールした場合の例:

\\wsl$\Ubuntu\home\<ユーザー名>\projects

ここに置けば Linux ネイティブのファイルシステムで動作するため、ビルドや実行が圧倒的に速くなります。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?