WSL2とDockerの環境周りメモ
WSL2とDocker Desktop for Windowsの環境周りの自分用メモ。
インストール系
WSL2をインストール
wsl --install
(これだけで「仮想マシンプラットフォーム」と「Linux用Windowsサブシステム」が有効になり、ディストロとしてUbuntuがインストールされる。別のディストロが良ければ、wsl -l -o
で名前を確認して、wsl --install -d {DistroName}
)- Windowsを再起動
- 自動的にUbuntuが起動するので、UNIX usernameとpasswordを入力
Docker Desktopをインストール
-
winget install Docker.DockerDesktop
でインストール- WSL2のデフォルトのディストロが、自動的にWSL2バックエンドに設定される。
ディストロを追加インストール
wsl -l -o
で候補一覧を表示 (またはwinget search {DistroName}
で検索、またはMicrosoft Storeで検索)wsl --install -d {DistroName}
でインストール (またはwinget install {DistroName}
でインストール、またはMicrosoft Storeで「入手」)- ディストロを起動
- UNIX usernameとpasswordを入力
確認系
ディストロの名前と状態を確認
-
wsl -l -v
docker-desktop
はDocker用のディストロ (docker-desktop-dataは4.30.0で廃止)。
ディストロの実体のパスを確認
-
PowerShellで
ls HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss
- BasePath欄で示されたパスの直下にある
ext4.vhdx
が、そのディストロの実体のVHD。
- BasePath欄で示されたパスの直下にある
ディストロが使用可能なディスクサイズを確認
wsl --system -d {DistroName} df -h /mnt/wslg/distro
Dockerのディスク使用量を確認
docker system df
お手入れ系
Dockerのゴミ掃除
docker container prune
で停止済みコンテナを削除docker image prune
でdanglingイメージを削除 (-a
で使ってないイメージをすべて削除)docker network prune
で使ってないネットワークを削除docker builder prune
でdanglingビルドキャッシュを削除 (-a
で全ビルドキャッシュを削除)docker volume prune
で使ってない無名ボリュームを削除 (-a
で名前付きボリュームも削除)- なんなら
docker system prune
で停止済みコンテナ、danglingイメージ、使ってないネットワーク、danglingビルドキャッシュをまとめて削除 (-a
で使ってないイメージをすべて削除、--volumes
で使ってない無名ボリュームも削除)
ディストロのVHDのスリム化
- PowerShellの
ls HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss
でディストロのBasePathを確認 (ここに実体のext4.vhdx
がある) - docker-desktopのディストロをスリム化するときは、タスクトレイのDockerを右クリックして「Quit Docker Desktop」
wsl -l -v
でディストロがstoppedであることを確認diskpart
でDiskPartを起動-
下記でスリム化
select vdisk file="{BasePath}\ext4.vhdx" detail vdisk # 物理サイズを確認 attach vdisk readonly compact vdisk detail vdisk # 物理サイズを確認 detach vdisk exit
WSL2を更新
wsl -v
で現在バージョンを確認wsl --update
で更新
変更系
デフォルトのディストロを変更
wsl -s {DistroName}
で設定
ディストロ接続時のユーザを変更
wsl -d {DistroName}
で接続-
sudo vi /etc/wsl.conf
で下記を追記しユーザを指定 ([user]セクションがなければrootでの接続になる)[user] default=alpha
wsl -t {DistroName}
でディストロを停止
ディストロをWSL2バックエンドに設定
- Docker DesktopのDashboardを開く
- 「⚙️(Settings) > Resources > WSL Integration」でバックエンドのディストロを指定する
ディストロを移動(リネーム/複製)
- ディストロがDockerのWSL2バックエンドの場合、Integrationを解除 (しないとディストロ停止直後にDocker Desktopが怒る)
wsl -l -v
でディストロの名前を確認wsl -t {DistroName}
でディストロを停止wsl --export {DistroName} {TarFileName}
でディストロをtarに書き出しwsl --unregister {DistroName}
で旧ディストロの登録を解除 (ここで解除しなければ環境のコピーと同義)wsl --import {DistroName} {InstallDir} {TarFileName}
で新ディストロとして書き戻し ({InstallDir}
直下にext4.vhdx
ができる)- ターミナルの設定で、ディストロの名前やコマンドラインを補正
削除系
Docker Desktopの削除
winget uninstall Docker.DockerDesktop
で削除
ディストロの削除
wsl -l -v
で名前を確認wsl --unregister {DistroName}
で登録解除winget uninstall {DistroName}
で削除 (または「設定 > アプリ > インストールされているアプリ」でディストロを「アンインストール」)- ターミナルの設定で、ディストロのプロファイルを削除
WSL2の削除
wsl --uninstall
- 「設定 > アプリ > インストールされているアプリ」で「Windows Subsystem for Linux Update」を「アンインストール」
- 管理者で
dism /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux
(または「設定 > システム > オプション機能 > Windowsのその他の機能」で「Linux用Windowsサブシステム」をオフに) - 管理者で
dism /online /disable-feature /featurename:VirtualMachinePlatform
(または「設定 > システム > オプション機能 > Windowsのその他の機能」で「仮想マシンプラットフォーム」をオフに) - Windowsを再起動
※バージョンメモ
- WSL 2.2.4.0
- Docker Desktop for Windows 4.33.1