WindowsにWSL2とDockerをインストールする手順

こんにちは、カフーブログのタカフです。

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でした。

old_windows_versionあれ、以外に古かったのね。

なので、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を開いて以下のコマンドを実行するだけです。

PowerShell
> wsl --install

このコマンドが終わって再起動すれば若干面倒だったWSL2が一発でインストール完了!

ついでにデフォルトのLinuxとしてUbuntsもインストール完了!

なんてこったい💀めちゃくちゃ簡単やん。

あとはこのページのLinuxのユーザー名・パスワードを設定から続きをやればOKです。

Windows 10のバージョン2004未満の方は以下より進めればよろしいかと思います。

WSL2のインストール手順(旧Win 10版)

基本的には上述のMicrosoftのページ「Windows 10 用 Windows Subsystem for Linux のインストール ガイド」の手順に沿って作業しておけば大丈夫です。

このページに書いてあるように管理者権限実行のPowerShellが必要なので、Winキーを押して、「PowerShell」で検索して「管理者として実行する」をクリックします。

image-20201202150543280

以下のウィンドウが開きます。

image-20201202163730249

ここで作業していきます。

まずは「手順 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 カーネル更新プログラム パッケージをダウンロードする」なのでページに書いてあるリンクからパッケージをダウンロードしてインストールを実行します。

image-20201202163543660

次に「手順 5 – WSL 2 を既定のバージョンとして設定する」です。

管理者権限実行のPowerShellで下記コマンドを実行します。

> wsl --set-default-version 2

これでWSL2が規定のバージョンとなりました。

次に、「手順 6 – 選択した Linux ディストリビューションをインストールする」です。

最新バージョンのUbuntsを入れておけばいいでしょう。

Microsoft StoreアプリからUbunts 20.04 LTS をインストールするため「入手」を押します。

image-20201202164053268

右下に出てくるので「起動」します。ここから起動しなくてもプログラムにUbuntsがあるはずなのでそこから起動してもOKです。

image-20201202164311924

初回のみ、新しいLinuxディストリビューションのユーザーとパスワードを作成する必要がありますのでそれを入力します。

Windows コンソールでの Ubuntu の展開

以上で、Windowsと結合されたLinuxのインストールが完了です。

さらば、Cygwin!!

ネットワークドライブとして割り当てておく

Ubuntuがインストールできれば、\\wsl$で見えるようになるので、これをネットワークドライブとして割り当てておくと便利です。

僕はZドライブとして割り当ててます。

WSL2の使用の上限を設定する

WSL2のデフォルトの設定だとメモリ使用量が際限なく増加し、ローカルPC側がメモリ枯渇になる問題を抱えています。

なのでWSL2で使えるメモリ使用量の上限を設定します。

今ログインしているユーザーフォルダ直下に.wslconfigというファイルを作成し、以下の内容を記述します。

.wslconfig
[wsl2]
memory=2GB

これで、WSL2で使えるメモリは常に2GBが固定となります。

開発内容によってはもっと増やしてもいいかもしれませんが、僕のようなWeb開発くらいですと2GBで十分でした。

Windowsターミナルをインストールする

(2021/11/08 追記:Win11の場合はデフォルトでターミナルアプリがインストールされたのでこの作業は必要ありません)

Macにもターミナルという標準コマンドラインアプリがありますが、
最新のWindowsにも標準コマンドラインアプリが登場したので、この機会にインストールしておいてもよいでしょう。

それが、Windowsターミナルです。

Windowsターミナルは一つのアプリからPowerShell、コマンドプロンプト、WSLのLinuxがタブで起動出来ます。

つまり先ほどインストールしたWSLのUbuntsターミナルが簡単に起動できるのでオススメです。

こちらもMicrosoftストアからインストール出来ます。

image-20201202165002916

インストールすると先ほどインストールしたUbuntsも見えるようになりタブで起動出来ます。うーむ!これ便利!

image-20201202165310128

ディストリビューションのバージョンを WSL 1 または WSL 2 に設定する

こちらをやっておきましょう。

LinuxディストリビューションのWSLのバージョンの規定をセットします。

wsl --set-version Ubuntu-20.04 2

そもそもWSL2を規定のバージョンにしておくことが出来ます。以下のコマンドを実行しておきます。

wsl --set-default-version 2

Dockerのインストール

Dockerのサイトに行きます。

https://www.docker.com/

image-20201202171244540

Docker Desktopをダウンロードしてインストールします。

image-20201202171344994

インストールを始めると、先ほどWSL2をインストールしているので「Install required Windows components for WSL 2」と出ているのでチェックを入れたままOKをクリックします。

image-20201202171435655

すでに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の方法などの便利な開発環境な構築方法を紹介しています。

現場からは以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です