2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker-desktopとWSL2の内部構造について見ていく

Last updated at Posted at 2024-02-06

WSLのディストリビューションのデフォルト設定が以下のようにdocker-desktopになっていると、

PS C:\Users\○○> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
  Ubuntu                 Running         2

vscodeで右下のリモートウィンドウの選択で、「WSLへ接続」をおすと「vscode server for WSL closed unexpectedly.check WSL terminal for more details.」とポップアップエラーが出る。
vscodeウィンドウの右下には「starting VS code in WSL(docker-desktop)」というエラーもでる。

docker for windowsをインストールすると、docker独自のWSLのディストリビューションを作成して、WindowsとLinuxを連携するファイルシステムを実現できるよう仮想化がおこなわれるため、

wsl -l -vでdecker-desktopがデフォルトになっていると、vscodeのリモートウィンドウ接続でWSLへの接続ができなくなる。

この現象を解決するには、

PS C:\Users\○○> wsl -s Ubuntu
この操作を正しく終了しました。
PS C:\Users\○○> wsl config
/bin/bash: line 1: config: command not found
PS C:\Users\○○> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

のようにディストリビューションのデフォルトをdockerが独自で利用しているWSLではなく、ユーザーがWSL上でさくせいしたものにきりかえるとかいしょうする。

しかし、docker desktop上での設定など色々関わるうえで、構成の理解が重要そうだったので調べをまとめてみる。

まず、基本的なインフラ構成から説明し、その後でwsl -l -vコマンドとDocker Desktopの設定について解説します。

基本的なインフラ構成

  1. Docker Desktop for Windows + WSL2:

Windows上でDocker Desktopをインストールすると、WSL2上に特別なDocker環境(docker-desktopとdocker-desktop-data)が作成されます。
この構成では、Linuxカーネルのパフォーマンスを活用しつつ、Windows上でDockerをスムーズに動作させることができます。
2. WSL2 + Linux ディストリビューション(例:Ubuntu-20.04):

WSL2を使って、UbuntuなどのLinuxディストリビューションをWindows上で動かすことができます。
Dockerを使用する場合、Linuxディストリビューション上で直接Dockerをインストールし、コンテナを管理することも可能です。
wsl -l -v コマンドについて
このコマンドを使用すると、現在インストールされているWSL2のディストリビューションとその状態が表示されます。*マークは、デフォルトで使用されるディストリビューションを示します。

docker-desktopがデフォルトの場合、Docker関連の操作はすべてDocker Desktop経由で行われます。
例えば、Ubuntu-20.04がデフォルトの場合、通常のLinuxコマンドライン操作やDockerコマンドはこのディストリビューション内で実行されます。
Docker Desktopの設定について
General設定:

"use the WSL 2 based engine"がONになっていると、Docker DesktopはWSL2をバックエンドとして使用します。
Resources -> WSL Integration設定:

"Enable integration with my default WSL distro"がONの場合、デフォルトのWSLディストリビューションとDocker Desktopが連携します。
特定のLinuxディストリビューションに対しては、個別に連携のON/OFFを設定できます。
VSCodeからWSLへの接続
VSCodeのリモートコンテナ機能を使用すると、Dockerコンテナ内でコードを開発することができます。
この機能を使用するためには、WSL2上にLinuxディストリビューションがインストールされている必要はありません。Docker DesktopのWSL Integration機能が有効であれば、Windows上の任意のディレクトリでコンテナを起動し、それをVSCodeで操作することが可能です。

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?