「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 互換レイヤではなくなり、単にHyper-VでホストされるLinux
- Hyper-Vは、WSL2専用にカスタマイズされた軽量版を使用。
- という事で、Home Editionでも利用可能になっている。
- Linuxカーネルも独自パッチで軽量化を実現している。
- ホストと異なるIPアドレスだったが、
Build 18945で改善されたもよう。
詳細 †
インストール †
システム要件 †
- Windows Insider Preview Build 18917以降が動作している環境であることが必須
- 「Windows 10 20H1」(バージョン 2004)で正式版がリリースされた。
- 従来通りWSL1をインストールしてから、PowerShellでWSL2に変換する
WSL1, 2 は共存可能? †
- 共存可能とのこと
- いつでも、WSL2にアップグレード、ダウングレード可能(PowerShellで)。
- この操作は、ディストリビューション毎に行うことが出来るらしい。
- エミュレーション環境(互換レイヤ)から仮想環境に変更されたが、
UXを踏襲(DrvFs? → P9とか)するので、敢えて、WSL1, 2を共存させなくても良さそう。
- 色々な記事が出ているが、ザックリ以下のような感じ。
- 以下のような特徴があり、
- WindowsのGUI操作性
- LinuxのCUI活用
- Linuxコンテナへのデプロイ
- 開発環境(e.g. LAMPスタックなど)は、WSL2 + Docker側にある。
- DockerコマンドはLinux側から実行。
- 後は、リモート・デバック(IDEから?LXCから?)
試用、評価 †
WSL2本体 †
Win11のリリース日程も発表された今頃(2021/09/02)、漸く、
WSL2にアップグレードすることにした(PCも 21H1 になってるし)
- 前提
- WSL(1)インストール済み。
- 直接はWSL2をインストールできないらしい。
- OSのアップデート
20H1以降で利用可能らしい。
- 仮想マシン プラットフォームオプション機能有効化
(Hyper-Vは必須ではないのでHome EditionでもOKらしい)
- 起動
Ubuntu-18.04アイコンなどをクリックしWSLを起動。
- Linux側からWindows側にネットワーク・アクセスしてみる。
$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.29.96.1
$ curl http://172.29.96.1/iisstart.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>IIS Windows</title>
<style type="text/css">
...
※ 結果:問題なくアクセスできた。
- Windows側からLinux側にネットワーク・アクセスしてみる。
(WSL(1)はローカル・プロセスだったが、WSL2ではVMになったので)
・Linux側:ncコマンド
$ nc -lk 9999
hogehoge
・Windows側:TCP/IPテストツール
GUIで127.0.0.1:9999に接続
※ 結果:問題なく接続&受信できた。
LinuxOSの新規インストール †
- 上記?は、Ubuntu-18.04をWSL → WSL2と持ってきた。
- ココでは、新しいバージョンのOSを新規インストールしてみる。
- 可能なディストリビューションの一覧を表示
wsl --list --online
- Microsoft Storeから
ディストリビューション一覧に表示されないものをインストールする場合。
- Microsoft StoreでUbuntuで検索して探し出しす。
- Ubuntu 22.04.1 LTSの「入手」ボタンをクリック。
- スタートメニューに登録されたらソコから起動。
LinuxOSの再インストール †
- WSL2環境は簡単に再インストール的なリフレッシュができる。
- Ubuntu 22.04.1 LTSを再インストール的にリフレッシュしてみる。
- GUIから
- [設定] → [アプリ] → [インストールされているアプリ] → [UbuntuXXX]
- [詳細オプション] → [リセット](でイケるらしいが、やったら失敗した。
Dockerサポート1 †
(≒ Docker Desktop WSL2 Backend)
- 前提
- Docker Desktop導入済み。
- WSL2へアップグレード済
- タスク・トレイ中のDocker Desktopアイコンをクリック
- User the WSL 2 based engine に
チェックを入れ[Apply&Restart]を押下。
- Linux カーネル更新プログラム パッケージを
ダウンロードして実行してインストールする。
- その後、タスク・トレイからDocker Desktopを
再起動するなどして、正常に動作するようになった。
- 動作確認
適当なDockerコマンドやDockerコンポーズを動かしてみる。
Dockerサポート2 †
Docker Desktop for Windows有償化対応
...と言う事で
WSL2自体の中にDockerコマンドやDockerコンポーズを入れる。
- ディストリビューション追加(Ubuntu 20.04)
- Ubuntu上にDocker Engineをインストール
- リポジトリをセットアップ
・aptパッケージ・インデックスを更新
$ sudo apt-get update
・インストール・パッケージを更新
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
・Docker社の公式GPGキーを追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
・安定したリポジトリを設定
$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Docker Engineのインストール
・インストール
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
・実行
・手動起動
$ sudo /etc/init.d/docker start
・動作確認
$ sudo docker run hello-world
- 既存のdocker-compose.ymlの位置へ。
$ cd /mnt/c/...
- docker-composeを実行
$ docker-compose up
- 表示されたURLにアクセスして、
jupyter/pyspark-notebookを使用。
Dockerサポート3 †
の両方が必要になるので、共存が可能か?を調査する。
Dockerサポート4 †
プロキシ環境下で使用する。
「<user_id>:<password>」中の"@" などのASCII文字は "%40" などとURLエンコードする。
- docker-composeコマンド
Dockerサポート2の手順でインストールして実行
(ただし、curlは-xオプションでプロキシ接続文字列を指定して実行)
開発とデバッグ †
WSL(1)の手順と、何がどう変わったのか?的な話。
...
参考 †
Publickey †
窓の杜 †
Qiita †
@IT †
kledgeb †
Microsoft Docs †
Qiita †
SIOS Tech. Lab †
- WSL2で劇的に変わるあなたのWebアプリケーション開発環境
- 【連載】WSL2、Visual Studio Code、
DockerでグッとよくなるWindows開発環境
Developers.IO †
OSSコンソーシアム > 開発基盤部会 Blog †
Tags: :Windows, :Linux, :Linuxサブシステム, :仮想化