7
2

More than 1 year has passed since last update.

WSL2の理解度を深める、Ubuntu と Docker Desktop とコンテナ の知見(その2/4)

Last updated at Posted at 2021-07-18

その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.04Ubuntu 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 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 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へのアクセス、ターミナルとしての接続

  1. Windows Terminal を起動し
  2. +記号での接続先で Ubuntuを選ぶ
    • 01.png
  3. 接続したら、Linux系のコマンドが使えます。
    • pwd , date , uname -a を実行してみた例
    • 02.png

wsl2 Ubuntu 内から Windows側を参照した場合

/mnt/ドライブ/ディレクトリ
CドライブのUsersディレクトリへ 
/mnt/c/Users/

Dドライブへ
/mnt/d/
  • 03.png

WindowsのエクスプローラーからUbuntu内のディレクトリを参照した場合

  • パスの指定
    \\wsl$Linuxディストリビューション\ディストリビューション内のパス
  • 04.png

  • wsl$ 直下に複数表示されるのは

    >wsl -l -v
      NAME                   STATE           VERSION
    * Ubuntu-20.04           Running         2
      docker-desktop-data    Running         2
      docker-desktop         Running         2
    

    に対応した分だけディストリビューションが表示される

  • Ubuntu内の /home/linux/ をWindows側からエクスプローラーで見ると、
    05.png

VSCode で wsl2 Ubuntuへのアクセス、ファイル表示や編集

  1. Windwos Terminal を起動
  2. Ubuntu 内に接続し、code . を入力すると
  3. Ubuntu内にVSCodeに必要なものがインストールされる

その後に、

-Windows にインストールした VS Code で 左下の><をクリックして、Reopen Folder in WSLで開く(Ubuntu内のファイルをUbuntu内に接続したときと同じ状態で開く)。VSCodeの画面左下、「WSL:Ubuntu-20.04」で表示される、VSCodeでUbuntu内のファイルやディレクトリが見え、編集できる。Ubuntuの操作をVSCodeでできる。

image.png

  • VS Code で 左下の><をクリックして、Reopen Folder LocallyReopen Folder In Windows)で開くと(Windows側のパスとして、WindowsからUbuntu内を参照している、Windowsのエクスプローラーから参照するのと同じ)

image.png

参考、wsl2 Ubuntu で、VSCodeを使う

公式の説明 https://docs.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2