こんにちは、カフーブログのタカフです。
2021年現在、Web開発はもっぱらDockerを使って開発することが多くなりました。
Macは元がUNIXなのでDockerとの親和性も高く開発しやすかったのですが、WindowsだとWSL登場前まではDockerとの相性は良くなく敬遠されがちでした。
しかし、WSL(Windows Subsystem for Linux)の登場により、Windows上でもLinuxが動作させやすくなり、さらにWSL2がリリースされたことで、WindowsでDockerは格段に扱いやすくなりました。
Hyper-Vが使えなかったWindows 10 HomeでもWSL2を使うことでDockerが使えるのはうれしいですよね。
本記事ではそんなWSL2とDockerのインストール方法手順を記事にしました。
まずはWindows Updateをしよう
WSL2のシステム要件は以下のページに記載されています。
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
このページには、
- x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。
と記載されていますが、Windows Updateしておいた方が無難です。
僕はこの記事投稿時はSurface Pro 7を使っていてその時はWindowsのバージョンが1909でした。
あれ、以外に古かったのね。
なので、Windows Updateを実行してバージョン 20H2
にしておきました。
WSL2のインストール手順(最新Win10 / Win 11版)
(2021/11/08 追記)
僕は新しく開発マシンとしてSurface Pro 8を購入して、そこにWSL2をインストールしようとしたのですが、このページで解説していた今までの方法ではインストール出来ませんでした。
Microsoftの公式ページを調べたところ、
最新のWindows 10 のバージョン 2004 以降 (ビルド 19041以降)または Win 11では、WSL2のインストールがめちゃくちゃ簡単になっていました。それを説明します。
最初にWindowsの機能で「仮想プラットフォーム」を有効にする必要があります。これをしないと後のWSL2のインストールに失敗します。
コントロールパネルの以下画面で「Windowsの機能の有効化または無効化」をクリックします。
次に出てくるダイアログで「仮想マシンプラットフォーム」にチェックを入れてOKをクリックして再起動します。
PCが立ち上がったら管理者権限でPowerShellを開いて以下のコマンドを実行するだけです。
> wsl --install
このコマンドが終わって再起動すれば若干面倒だったWSL2が一発でインストール完了!
ついでにデフォルトのLinuxとしてUbuntsもインストール完了!
なんてこったい💀めちゃくちゃ簡単やん。
あとはこのページのLinuxのユーザー名・パスワードを設定から続きをやればOKです。
Windows 10のバージョン2004未満の方は以下より進めればよろしいかと思います。
WSL2のインストール手順(旧Win 10版)
基本的には上述のMicrosoftのページ「Windows 10 用 Windows Subsystem for Linux のインストール ガイド」の手順に沿って作業しておけば大丈夫です。
このページに書いてあるように管理者権限実行のPowerShellが必要なので、Winキーを押して、「PowerShell」で検索して「管理者として実行する」をクリックします。
以下のウィンドウが開きます。
ここで作業していきます。
まずは「手順 1 – Linux 用 Windows サブシステムを有効にする」です。
そこで下記コマンドを実行します。
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
次に「手順 2 – WSL 2 に更新する」ですが、先ほどWindows UpdateをやったのでOKです。
次に「手順 3: 仮想マシンの機能を有効にする」です。
下記コマンドを実行します。feturenameの後が少し変わります。
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
ここで一旦再起動します。
次に、「手順 4 – Linux カーネル更新プログラム パッケージをダウンロードする」なのでページに書いてあるリンクからパッケージをダウンロードしてインストールを実行します。
次に「手順 5 – WSL 2 を既定のバージョンとして設定する」です。
管理者権限実行のPowerShellで下記コマンドを実行します。
> wsl --set-default-version 2
これでWSL2が規定のバージョンとなりました。
次に、「手順 6 – 選択した Linux ディストリビューションをインストールする」です。
最新バージョンのUbuntsを入れておけばいいでしょう。
Microsoft StoreアプリからUbunts 20.04 LTS をインストールするため「入手」を押します。
右下に出てくるので「起動」します。ここから起動しなくてもプログラムにUbuntsがあるはずなのでそこから起動してもOKです。
初回のみ、新しいLinuxディストリビューションのユーザーとパスワードを作成する必要がありますのでそれを入力します。
以上で、Windowsと結合されたLinuxのインストールが完了です。
さらば、Cygwin!!
ネットワークドライブとして割り当てておく
Ubuntuがインストールできれば、\\wsl$
で見えるようになるので、これをネットワークドライブとして割り当てておくと便利です。
僕はZドライブとして割り当ててます。
WSL2の使用の上限を設定する
WSL2のデフォルトの設定だとメモリ使用量が際限なく増加し、ローカルPC側がメモリ枯渇になる問題を抱えています。
なのでWSL2で使えるメモリ使用量の上限を設定します。
今ログインしているユーザーフォルダ直下に.wslconfig
というファイルを作成し、以下の内容を記述します。
[wsl2]
memory=2GB
これで、WSL2で使えるメモリは常に2GBが固定となります。
開発内容によってはもっと増やしてもいいかもしれませんが、僕のようなWeb開発くらいですと2GBで十分でした。
Windowsターミナルをインストールする
(2021/11/08 追記:Win11の場合はデフォルトでターミナルアプリがインストールされたのでこの作業は必要ありません)
Macにもターミナルという標準コマンドラインアプリがありますが、
最新のWindowsにも標準コマンドラインアプリが登場したので、この機会にインストールしておいてもよいでしょう。
それが、Windowsターミナルです。
Windowsターミナルは一つのアプリからPowerShell、コマンドプロンプト、WSLのLinuxがタブで起動出来ます。
つまり先ほどインストールしたWSLのUbuntsターミナルが簡単に起動できるのでオススメです。
こちらもMicrosoftストアからインストール出来ます。
インストールすると先ほどインストールしたUbuntsも見えるようになりタブで起動出来ます。うーむ!これ便利!
ディストリビューションのバージョンを WSL 1 または WSL 2 に設定する
こちらをやっておきましょう。
LinuxディストリビューションのWSLのバージョンの規定をセットします。
wsl --set-version Ubuntu-20.04 2
そもそもWSL2を規定のバージョンにしておくことが出来ます。以下のコマンドを実行しておきます。
wsl --set-default-version 2
Dockerのインストール
Dockerのサイトに行きます。
Docker Desktopをダウンロードしてインストールします。
インストールを始めると、先ほどWSL2をインストールしているので「Install required Windows components for WSL 2」と出ているのでチェックを入れたままOKをクリックします。
すでにDockerをインストール済みの場合は有効にするだけのようです。
dockerをインストールすると、先ほどのUbuntsからも使えるようになります。
takafumi@SURFACE-PRO-7:/mnt/c/Users/takafumi$ docker -v
Docker version 19.03.13, build 4484c46d9d
まとめ
簡単な手順だけの記事でしたが、以上となります。
あとは実際にDockerを使って開発環境を構築していったりします。
DockerでPHPの開発環境を構築するには、手前味噌ながら以下の記事がオススメです。
https://kahoo.blog/docker-php-mysql-developing-environment/
この記事ではドメインアクセス・SSL適用・PHPのXDebugの方法などの便利な開発環境な構築方法を紹介しています。
現場からは以上です。