Subsystem for Linux 2(WSL2)はWindowsからLinuxが使える機能です。
2020年4月にリリースされるWindows10 2004から提供される予定です。
もともと2017年にリリースされたWindows 10 Fall Creators UpdateでWSLが提供されてましたが、そちらは本物のLinuxカーネルを使っておらず、実行できるシステムコールが限られてました。
2は本物のLinuxカーネルが動作します。
Dockerも使えるようになります。
これにより今後はWindowsでもLinuxを使用して開発が行いやすくなると思います。
WSL2のインストール
WSL 2 のインストール手順をもとに実施
WSL2に必要な環境条件は以下
- Windows 10 builds 18917 or higher
2020/03/20時点でWindows10 builds 18917はWindows Insider Program(slow or fast)に加入しないとアップデートできない。
-
Windows Insider Programに加入する
Windowsメニューから
設定 > 更新とセキュリティ > Windows Insider Program
より加入する。
[スロー]か[ファスト]を選択
Windows Updateを実施する
-
WSL2を有効にする
設定 > アプリ > アプリと機能 > オプション
から「Windowsのその他の機能」リンクをクリックする。
以下のチェックをONにする。
- Linux 用 Windows サブシステム
- 仮想マシン プラットフォーム
PowerShellを管理者権限で起動し、以下を実行しても実施できる。
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart > dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
その後、再起動する。
-
Microsoft StoreからLinuxをインストールする
後述のDocker Desktop for WSL 2が使えるのはUbuntu 18.04 LTSのみの模様。(2020/03/20時点 Storeには「Ubuntu」もあるが、そちらは対応していない)
-
Ubuntu 18.04 LTSをダウンロードしたら起動する
起動後にインストールが始まり、ユーザ名とパスワードを入力し、ユーザを作成する。
-
PowerShellを起動する
# インストールしたディストリビューションの一覧を表示する > wsl -l Linux 用 Windows サブシステム ディストリビューション: Ubuntu-18.04 (既定) # WSLの状態とバージョンを確認する(VERSIONが1はWSLということです) > wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 1 # Ubuntu-18.04をWSL2用に変換する > wsl --set-version Ubuntu-18.04 2 # WSL2を標準設定とする > wsl --set-default-version 2 WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください。
上記のメッセージの通り、WSL 2 Linux カーネルの更新へアクセスし、更新プログラムをインストールする。インストール後、以下を実行する。
# WSL2を標準設定とする > wsl --set-default-version 2 # WSLの状態とバージョンを確認する > wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 2
-
Ubuntuを起動/停止する
# 起動する > wsl -d Ubuntu-18.04 To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. # フォルダ階層は以下になる $ /home/user/ ← 登録したLinuxユーザのhome /mnt/c ← WindowsのCドライブ /mnt/d ← WindowsのDドライブ # Windowsに戻る $ exit
これでWindowsからLinuxが使えるようなりました。
WSLはWindowsからシームレスにシェルを使え、VirtualBoxやVMWareのようにOSが起動する時間を待つ必要もありません。
Docker Desktop for Windowsをインストールする
Docker Desktop for Windowsをインストールする
-
Settings画面が表示されるので、以下を確認する
- Dockerのステータスがrunningになっていること
-
Use the WSL 2 based engine
のチェックボックスがONになっていること
また、
Resources > WSL INTEGRATION
を選択し、Enable integration with my default WSL distro
のチェックボックスがONになっていることを確認する
-
DockerがWSL2 based engineで起動されていれば、Dockerコマンドを実施すると、上記でインストールしたWSL2のUbuntuにDockerコンテナが作成されるようになる
PorwerShellを起動し、Dockerコマンドを実行することができる。
Ubuntuのほうでもdockerコマンドの実行ができる。
# powershellでdockerコマンドを実行 > docker run hello-world ... Hello from Docker! This message shows that your installation appears to be working correctly. > docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0629bbd84b50 hello-world "/hello" 22 seconds ago Exited (0) 20 seconds ago mystifying_almeida # WSL2に切り替える > wsl -d Ubuntu-18.04 # Ubuntuでdockerコマンドを実行 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0629bbd84b50 hello-world "/hello" 22 seconds ago Exited (0) 20 seconds ago mystifying_almeida
WindowsとUbuntuでコンテナが共有されていることが確認できる。
Docker Desktop for WSL 2を使うと、このようにWindowsからDockerコマンドを実行して、LinuxのDockerコンテナを操作することができます。
2020/04/11追記
DockerComposeは、PowerShellからは実行できないようです。(実行してもLinuxのコンテナとならない)。Linuxのほうで実行すればWindowsと共有できそうです。
2020/05/11追記
Docker Desktop For Windowsの(Edge版:バーション2.3.0.1)で、WindowsからDockerComposeできるようになりました。
こちらのバージョンではWindows10 Home Editionでも動作するようです。
Docker Desktop for Winodwsのバージョンアップに伴い本記事の内容を修正しました。
2021/03/07追記
Dockerのバージョンアップに伴いStable版に記述を修正しました。
Top comments (0)