【Windows10 Home】WSL2経由でDocker For Windowsをインストールする!

Windows環境に安全にしかも気軽にミドルウェア(サーバー、DBなど)をインストールしようと思った場合、無料で使えるDockerを使うのが一番だと思いました。

広告

Dockerを使うメリット

Dockerとは、Docker社が開発しているコンテナ型の仮想環境のことです。今までの仮想環境は、ホストOS上でゲストOSを動かし(動かしているOS上でさらにOSを動かしているイメージ)その上でミドルウェアを動かしていたのですが、コンテナ型の仮想環境は、ホストOSのカーネルを利用してコンテナという単位でミドルウェアを動かしているので、軽量で高速なのが特徴です。

下記サイトに詳しく載っているのでよろしければご参照ください。

さくらのナレッジさん、ありがとうございます。

WSL2って何?

WSLとは「Windows Subsystem For Linux」の略で、Windows上でLinuxを動かすことができるサブシステムのことです。

DockerはLinux上でしか動くことができないので、WSLを介すことでWindows上でDockerを動かしています。

Windows上でDockerを動かすためには、WSLを使うもしくはHyper-Vを使う方法があるのですが、Docker公式サイトによると、Docker For WindowsはWSL2上で動かすことを推奨しています。

WSL 2 provides better performance than the legacy Hyper-V backend.
(WSL2は、従来のHyper-Vバックエンドよりも優れたパフォーマンスを提供します。)

※参照元:https://docs.docker.com/desktop/windows/

WSLには、WSL1とWSL2がありそれぞれメリット・デメリットがあります。WSL2はWSL1にない完全なLinuxカーネルが再現されていますが、OS ファイル システム間でのパフォーマンスではWSL2よりWSL1の方が速いようです。

詳しくはマイクロソフト公式マニュアルをご参照ください。

WSL2を有効にしてみよう!

手順はマイクロソフト公式マニュアルに詳しく載っているので、こちらの手順に沿って進めていきます。

  • PowerShellで「Linux 用 Windows サブシステム」と「仮想マシンの機能」を有効化します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\Xxxx> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.746

イメージのバージョン: 10.0.19041.804

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\Users\Xxxx> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.746

イメージのバージョン: 10.0.19041.804

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\Users\Xxxx>
  • 変更を有効化するためにパソコンを再起動します。

  • 「Linux カーネル更新プログラム パッケージ」を下記サイトからダウンロードします。

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

  • WSL2を既定のバージョンとして設定します。
PS C:\Users\Xxxx> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
PS C:\Users\Xxxx>
  • Microsoft Storeから選択した「Linux ディストリビューション」をインストールします。
私の環境では、「Ubuntu 20.04 LTS」をインストールしました。「SUSE Linux Enterprise Server 15 SP1」、「Debian GNU/Linux」など他のLinux ディストリビューションについてもマイクロソフト公式マニュアルにリンクが載っていますので、よろしければご参照ください。https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
  • 「Ubuntu 20.04 LTS」を起動します。
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: xxxx
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.72-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Mar 13 16:47:49 JST 2021

  System load:  0.56               Processes:             8
  Usage of /:   0.4% of 250.98GB   Users logged in:       0
  Memory usage: 1%                 IPv4 address for eth0: 172.23.201.123
  Swap usage:   0%

1 update can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable

The list of available updates is more than a week old.
To check for new updates run: sudo apt update

This message is shown once a day. To disable it please create the
/home/xxxx/.hushlogin file.
xxxx@DESKTOP-LBV79E7:~$
  • 起動できました。WSL2が有効になっているようです。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\Xxxx> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2
PS C:\Users\Xxxx>

WSL2で使用するメモリを制限する

初期設定のまま WSL2 を使っていると、メモリ使用量の 80% まで使ってしまいます。

急に動作が重くなってタスクマネージャを確認すると、Vmmem というプロセスがメモリを占有していたなんてことがあったりします。(Vmmem は WSL2 が使用しているプロセスです)

これを解決するには、WSL2 のメモリ使用量に上限を持たせてあげればいいのです。

WSL2 のメモリ使用量に上限を持たせるには、「C:\Users\[username]\.wslconfig」を作成して WSL を再起動するだけでOKです。(WSL の再起動が何か分からない場合はパソコンを再起動すれば反映されます)

  • .wslconfig ファイルの中身(メモリ使用量の上限を2GBにした場合の例)
[wsl2]
memory=2GB
  • WSL の再起動
1.下記コマンドを PowerShell で実行
    wsl --shutdown
2.Ubuntu、Dockerのような WSL アプリを開く

「Docker For Windows」をインストールしよう!

  • 「Docker Desktop Installer.exe」をDocker公式GitHubからダウンロードします。
  • 「Docker Desktop Installer.exe」を実行します。
  • 「Install required Windows components for WSL2」のチェックを付けたままOKをクリックします。
  • インストールが始まります。
  • インストールが完了しました。「Close and log out」をクリックして、パソコンをログアウトします。
  • 「Docker For Windows」が立ち上がります。チュートリアルを試す場合は「Start」を、そのままスタートする場合は「Skip tutorial」をクリックします。
  • Dockerのダッシュボードが表示されます。

localhostで「Getting Started」を表示してみよう!

  • PowerShellで下記コマンドを実行します。
docker run -d -p 80:80 docker/getting-started
  • 「docker/getting-started」のイメージが保存されます。
  • コンテナが起動しています。

まとめ

WSL2の有効化、Docker For Windowsのインストール、デモコンテナの実行までを見てきました。

Dockerを使うのは初めてなのですが、色々触ってみて、役立つことやつまずいたけど解決したことなどはブログにしていこうと思っているので、楽しみにしておいて下さいね。

最後までお読みいただきありがとうございました。

広告

コメントを残す

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

CAPTCHA


ABOUT US
ぽむ
はじめまして! ぽむ と申します。 Java、Kotlin (Android)、VBAなどの開発経験があるITエンジニアです。 備忘録として始めたブログですがみなさまのお役に立てたら光栄です。 英語など IT 以外の話題にも触れていこうと思っています。 詳しい自己紹介についてはこちら! よろしくお願いします。