その1 https://qiita.com/ssugimoto/items/668d33e4b151933b2e19
その2 この記事
その3 https://qiita.com/ssugimoto/items/3b4a26711604bb6d56d2
その4 https://qiita.com/ssugimoto/items/a14262fa0bc8f60efee8
wsl2 Ubuntu(マイクロソフトストアから入れるUbuntu 18.04
や Ubuntu 20.04
のこと)について
まず、そのUbuntuがややこしい
-
wsl2 Ubuntu とは、https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 にある、「手順 6 - 選択した Linux ディストリビューションをインストールする」の入れる
Ubuntu 18.04 LTS | Ubuntu 20.04 LTS
のこと -
誤った認識
- wsl2を動かすために wsl2 Ubuntuを使う ← 違う、wsl2にUbuntuが必要なわけではない。
- wsl2の上に乗ってる wsl2 Ubuntuで、そのUbuntuが Docker Desktop for Windows を動かす Ubuntu ←△(確かにwsl2の上でUbuntuは動く、docker Desktop でコンテナを動かすときに、Ubuntu設定はあるけど... , Docker DesktopはWindowsで動き、Docker Desktopとしてバックグラウンドではwsl2使う or docker-desktop自身を使う それぞれの設定があるのでさらに認識誤りする)
-
不明
- wsl2 がなくても マイクロソフトストアのUbuntuはインストールできて使える?(不明、やったことない)、おそらく入らないと思うけど
-
正しい
- wsl2 入れて、wsl2 Ubuntu 入れなくても、Docker Desktop for Windows は動く ← ◯
- wsl2での wsl -l -v で、dockerが表示される通り、docker側でよしなにやってくれ Docker Desktop for Windows によってLinuxコンテナは動きます
- wsl2上にマイクロソフトストアからのUbuntuがインストールできず、wsl2 + Docker Desktopでコンテナ使っていたので、そういった構成でも良い
- wsl2 入れて、wsl2 Ubuntu 入れなくても、Docker Desktop for Windows は動く ← ◯
-
正しそうな認識
- wsl2 Ubuntu は docker hub 等にある Ubuntuではない
- wsl2 Ubuntu は dockerコンテナのLinux(alpine等)ではない
- wsl2 Ubuntu は コンテナではない(コンテナではなく、windows上で動くLinuxディストリビューションの1つ。Windows内にインストールするけどコンテナビルドをしたわけではない)
- docker エンジンのバックエンド裏側として、wsl2を使う
- dockerエンジンのバックエンドにwsl2を使う時のdockerのwsl2はUbuntuではなく、wsl2である
- dockerエンジンのバックエンド裏側は、wsl2を使わずにdocker-desktopをバックエンド裏側に使うこともできる
wsl2単独で考える、ややこしさを増やすものはDocker Desktopが登場するところ
- wsl2 と Docker Desktop for windows の2つのうち、dockerはいったん切り離して考える
- wsl2 単独では何も意味はなし、そうゆうアーキテクチャ・仕組みがWindows 10 上にあるというだけ
- wsl2 + マイクロソフトストアにあるLinuxディストリビューションのUbuntuが動く
- まさに、この状態が windowsの中でUbuntuが動いてる。
- 誤解を招くかもしれないが、wsl2は
- Windows 10 Pro のwsl2が出る前の Hyper-V 相当
- wsl2は、VirtualBox の代わり
- wsl2は、VMWare(VMware Workstation Player)の代わり
- wsl2は、Macで例えるならば、Parallels Desktop
- この記事書いてて、しっくりきたのは Mac上でWindowsを動かすParallels がwsl2に最も近しいと思った、Mac操作しながらWindows10側のアプリをMac上でシームレスに動かせる、Macの画面上にリモート画面でなくソフトウェアの画面が表示される。あたかもMacでWindowsのアプリを動かしているかのような感覚。
wsl2入れて、Ubuntu入れて何するの?
そう、そうなんです。Ubuntu 内でやる作業ってあまりない。例えば、どんなことがありえるのか
- Ubuntu内に、Ubuntu向けのdockerエンジンを入れることで、Ubuntuのdockerが動かせる、Windowsのdockerではないため、より実践に近づくし、比較的速い、メモリ使う量が減らせる。
- Ubuntu内でWindows側のディレクトリを参照して、grep や sed 等のLinux系のコマンド使う
- PowerShellで代替できそうだけど、・・・
- Ubuntu好きで、Ubuntuをメインに作業するとか、Ubuntuの操作はWindows Terminal入れて使います.
- WSL2+ubuntu20.04: GUI化して使う方法 のように、Windows内でUbuntuにリモート接続してUbuntuの画面操作する
-
アプリで Linux GUI アプリを実行Linux 用 Windows サブシステム (プレビュー)
- Windows アプリから Linux アプリを起動スタート メニュー
- Linux アプリを Windows タスク バーにピン留めする
- Alt タブを使用して Linux アプリと Windows アプリを切り替える
- Windows アプリと Linux アプリ間で切り取り + 貼り付け
wsl2 Ubuntu不要なケース
- WindowsでDocker コンテナ使いたいならば、wsl2 か wsl1 のみで wsl2 Ubuntuはなくても良い(前述の通り、Docker Desktop for Windowsがよしなにやってくれる。後述でも、wsl2とdocker Desktop について記載しているので参照)
- おそらくMySQLやPostgreSQLのdocker と AWS Fargateに載せるJVMで動くアプリ、Railsアプリ、PHP Laravel、Go などは Ubuntuは使わなくても良い
wsl2 のUbuntuへのアクセス、ターミナルとしての接続
wsl2 Ubuntu 内から Windows側を参照した場合
/mnt/ドライブ/ディレクトリ
CドライブのUsersディレクトリへ
/mnt/c/Users/
Dドライブへ
/mnt/d/
WindowsのエクスプローラーからUbuntu内のディレクトリを参照した場合
- パスの指定
\\wsl$Linuxディストリビューション\ディストリビューション内のパス
-
wsl$
直下に複数表示されるのは>wsl -l -v NAME STATE VERSION * Ubuntu-20.04 Running 2 docker-desktop-data Running 2 docker-desktop Running 2
に対応した分だけディストリビューションが表示される
VSCode で wsl2 Ubuntuへのアクセス、ファイル表示や編集
- Windwos Terminal を起動
- Ubuntu 内に接続し、
code .
を入力すると - Ubuntu内にVSCodeに必要なものがインストールされる
その後に、
-Windows にインストールした VS Code で 左下の><をクリックして、Reopen Folder in WSL
で開く(Ubuntu内のファイルをUbuntu内に接続したときと同じ状態で開く)。VSCodeの画面左下、「WSL:Ubuntu-20.04」で表示される、VSCodeでUbuntu内のファイルやディレクトリが見え、編集できる。Ubuntuの操作をVSCodeでできる。
- VS Code で 左下の><をクリックして、
Reopen Folder Locally
(Reopen Folder In Windows
)で開くと(Windows側のパスとして、WindowsからUbuntu内を参照している、Windowsのエクスプローラーから参照するのと同じ)
参考、wsl2 Ubuntu で、VSCodeを使う
公式の説明 https://docs.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode