【マイナビITエージェント】あなたの転職活動を無料でサポートいたします
WSLとは?
WSLとは「Windows Subsystem for Linux」の略で、Windows上でLinuxのコマンド・ツール・アプリケーション等を直接実行するサブシステムを指します。マイクロソフト社によって提供されています。 【参考】:Windows Subsystem for Linuxに関するドキュメント
WSL2とは
WSL2はWSLの新バージョンで、ELF64 Linuxのバイナリ実行可能でLinuxシステムコールの完全互換性を確保したリリースです。WSLと操作性は変わらない上に、最新の仮想化テクノロジーを使用することでファイルシステム性能が向上しています。
WSL2は、Windows 10(バージョン 1903、ビルド 18362以降)でサポートされています。現バージョンのインストール要件は Windows 10(バージョン 2004以降 、ビルド 19041以降)およびWindows 11が実行環境として必要です。
WSL1とWSL2の違い
WSL2はWSL1を改良したリリースですが、アーキテクチャ変更により以下の違いがあります。
・WSL1とWSL2共通 Linux統合・高速起動・省スペースフットプリント・VMwareとVirtualBoxでの実行機能は共通です。
・WSL1のみ OSファイルシステム間の性能については、WSL1が上回ります。 WSL2利用時の性能回避策が提示されています。
・WSL2のみ マネージドVM・Linuxカーネル完全実装・システムコール完全互換はWSL2のみの特長です。
WSLのインストール
Windows 10(バージョン 2004以降 、ビルド 19041以降)およびWindows 11が実行環境として準備できたら、WSLのインストール作業を進めます。WSLのインストールはwsl.exeを用います。 【参考】:WSL のインストール
wsl.exeの使い方は以下の通りです。
・インストール wsl --install 、デフォルトのディストリビューションをインストール wsl --install --distribution, -d [引数] 、ディストリビューションを指定してインストール
例:wsl --install ・ディストリビューションを一覧表示 wsl --list, -l 、ディストリビューションを一覧表示 wsl --list --online, -o 、使用できるディストリビューションをオンライン取得し表示
・ヘルプ wsl --help 、使用方法の表示
操作例:インストール可能なディストリビューションを表示する例です。
C:\Users\Foo>wsl --list --online
実行結果:
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
'wsl --install -d
NAME FRIENDLY NAME * Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS C:\Users\Foo>
操作例:デフォルトのディストリビューションをインストールする例です。
C:\Users\Foo>wsl --install
デフォルトのディストリビューションはUbuntuですので、”wsl – install -d Ubuntu”と明示しインストールすることもできます。
WSLの環境設定
WSLのインストールが完了したら、ガイドに従い開発環境を設定します。最初にスタートメニューからインストールしたディストリビューションを開きます。デフォルトはUbuntuです。初回ユーザ名とパスワードの作成が求められますので、指示に従い作成します。 【参考】:WSL の開発環境を設定する
初回作成したユーザアカウントがデフォルトのユーザとして登録されます。また、Linux管理者としてsudoコマンドを実行可能となります。パスワード変更は、Linuxの”passwd”コマンドにより変更可能です。Linux管理者が設定できたら、必要に応じてディストリビューションのパッケージマネージャでパッケージ更新を行います。
sudo apt update && sudo apt upgrade
このパッケージ更新は定期的な更新が求められる作業となります。
Linux管理はコマンドラインインターフェイスで実施します。そのため、WSLではWindows Terminalを用いたアプリケーション実行と管理が適しています。マイクロソフトストアからインストールする方法は、以下のドキュメントに記載されています。モジュールはGitHubでも公開されています。 【参考】:Install and get started setting up Windows Terminal
DockerコンテナをWSL2で利用するには
DockerとWSL2の関係は、WSL2はLinuxを稼働させる環境・DockerはLinuxで動作するソフトウェア、という関係です。2つのソフトウェアで機能が競合するのではなく、それぞれの役割に違いがあるだけです。
WSL1ではアーキテクチャの違いにより、Docker EngineをWSL内で実行することはできず、Hyper-V仮想マシンとLinuxKitが必要でした。WSL2はLinuxのシステムコール完全互換となり、Docker LinuxコンテナをWSL2でそのまま利用することができます。 【参考】:WSL 2 での Docker リモート コンテナーの概要
Docker Desktop for Windowsのインストール
Docker Desktop for Windowsのインストールは、インストーラ(Docker Desktop Installer.exe)をダウンロード・起動します。インストーラのConfiguration画面では「 Install required Windows components for WSL 2」の選択を忘れずに行います。
最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能になります。 参考:Docker Desktop for Windows 参考:Install Docker Desktop on Windows
Docker Desktop for WindowsのWSL2 バックエンドを利用することで、Visual Studio Codeを使用しコード開発を行い、Linuxコンテナをビルドすることができます。Docker Desktopのダウンロード・インストールが完了したら、Dockerアイコンを右クリックし「設定」「全般」から「Use the WSL 2 based engine」がチェックされていることを確認します。
続いて、「設定」「全般」から「WSL Integration」よりインストールされているディストリビューションからDockerのWSL Integration対象を選択します。動作確認するには、”docker run hello-world”を起動することで正常動作を確認します。 【参考】:Docker Desktop WSL 2 backend
WSL2でDockerを使用したアプリケーション開発を行う場合は、Visual Studio Codeのリモートコンテナ拡張機能をインストールします。対応するDockerもDocker拡張機能としてマイクロソフト社のマーケットプレイスからインストールすることができます。 【参考】:Remote - Containers 【参考】:Docker for Visual Studio Code
Docker Desktopを使わないでWSL2のみ利用する方法
WSL2はLinuxの稼働環境ですので、Docker EngineとDocker CLIをインストールすることでDocker Linuxコンテナを利用することができます。具体的には、次のようにWSL2のLinuxからコマンドを実行します。
sudo apt install docker-ce docker-ce-cli containerd.io
サービス利用時に“sudo service docker start”と都度起動するか、.bashrc等に記入し自動的に起動させます。 【参考】:Install Docker Engine on Ubuntu
必要に応じてDocker Composeのインストールも、Linuxのインストール手順に従い進めていきます。 【参考】:Install Docker Compose
これで、Docker Desktopをインストール・起動しないでDocker Engineだけを利用することができます。Docker Personalは個人・小規模向けの無料プランですが、この方法で中大規模事業者においてもライセンス変更問題の影響を受けずに利用することができます。この方法はDocker Pricing FAQに記載されている正規の方法ですので、問題なく活用できます。 【参考】:Docker is Updating and Extending Our Product Subscriptions 【参考】:Docker FAQs
WSL2を使ってDockerを活用しましょう
WSL2は、Linux実行環境でLinuxディストリビューションの完全互換性を実現するサブシステムです。WSL2を利用することで、Docker Desktop for WindowsでもDocker Engineでも動作可能です。
構成検討に際しWindowsコンテナかLinuxコンテナか悩んでいる方は、Docker Desktop for WindowsのWSL 2 バックエンド利用で、Visual Studio Codeを使用したLinuxコンテナのアプリケーション開発も可能です。多様化するニーズをカバーするコンテナ利用方法の選択肢の1つとして継続的に知識吸収しましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから