Windows環境のDockerとWSLの活用方法・手順を解説
thumb_dockerwindowswsl2_01
Windows環境のDockerとWSLの活用方法・手順を解説
アンドエンジニア編集部
2022.01.05
この記事でわかること
WSLは、Windows上でLinuxのコマンド・ツール・アプリケーション等を直接実行するサブシステムです
WSL2は、Linuxシステムコールの完全互換性を確保しDocker Linuxコンテナが作成できます
Docker Desktop for Windowsを使わずにDocker Engineを起動することも可能です

【マイナビITエージェント】あなたの転職活動を無料でサポートいたします

WSLとは?

img_dockerwindowswsl2_01

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のインストール

img_dockerwindowswsl2_02

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 4.2の新機能とインストール方法

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を活用しましょう

img_dockerwindowswsl2_03

WSL2は、Linux実行環境でLinuxディストリビューションの完全互換性を実現するサブシステムです。WSL2を利用することで、Docker Desktop for WindowsでもDocker Engineでも動作可能です。

構成検討に際しWindowsコンテナかLinuxコンテナか悩んでいる方は、Docker Desktop for WindowsのWSL 2 バックエンド利用で、Visual Studio Codeを使用したLinuxコンテナのアプリケーション開発も可能です。多様化するニーズをカバーするコンテナ利用方法の選択肢の1つとして継続的に知識吸収しましょう。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT