WSL2が使えるようになったので、Windows でも Docker を使ってみることにしました。Docker Desktop をインストールすると、無条件で Cドライブ上に仮想環境が作られます。が、Cドライブの空き容量が少なくなったので、Docker環境をDドライブに移動したという話。
試した環境
Windows10 Pro 2004 OSビルド 19041.329
Docker Desktop community 2.3.0.3
WSL2(Windows Subsystem for Linux)

Docker Desktop の設定では WSL2 Integration を有効にしています。WSLのディストリビューションは Ubuntu 20.04 を使っているので、それとのインテグレーションも有効にしてあります。

方法
Docker Desktop が使っている WSL 上のディストリビューション docker-desktop-data が Cドライブ上にありディスクを消費しているので、一度エクスポートしてから、Dドライブにインポートするという方法をとります。
> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
docker-desktop-data ←←←← これを移動します。
docker-desktop
実際のディスクイメージは、%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx にあります。

手順
Docker Desktop を止めます。

コマンドプロンプトからWSLのディストリビューションを止めます。
> wsl --shutdown
> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
docker-desktop-data Stopped 2
docker-desktop Stopped 2
docker-desktop-data を tar ファイルにエクスポートします。少し時間がかかります。
wsl –export <ディストリビューション> <ファイル名>
> wsl --export docker-desktop-data D:\Docker\docker-desktop-data.tar
ext4.vhdx は 50GB を超えていましたが、エクスポートした docker-desktop-data.tar は 11GBでした。
ディストリビューションの登録を解除します。
> wsl --unregister docker-desktop-data
エクスポートしておいた tar ファイルをインポートします。コマンドの引数でインストール場所を指定しますが、ここを Dドライブなどの容量に余裕のある場所にします。
オプションには WSLのバージョンを指定しますが、デフォルトが WSL2 であれば指定する必要はありません。
wsl –import <ディストリビューション> <インストール場所> <ファイル名> [オプション]
> wsl --import docker-desktop-data D:\docker-desktop\data D:\Docker\docker-desktop-data.tar
手順は以上です。

とくに難しいところはありまへん。








コメント
手順のご提示、誠にありがとうございます。
手順通りで実施した後、「docker desktop for windows」が起動できなくなる問題が発生してました。
別のサイトで調べたら、最後のimportのコマンドの後ろには「–version 2」を付ける必要らしいです。しないと、wslのバージョンが正しくありません。
誤)wsl –import docker-desktop-data D:\docker-desktop\data D:\Docker\docker-desktop-data.tar
正)wsl –import docker-desktop-data D:\docker-desktop\data D:\Docker\docker-desktop-data.tar –version 2
一応ご連携いたします。
こんにちは、こんばんは。
ご指摘ありがとうございます。当記事ではWSLのデフォルトがVersion2になっていることを前提に書いておりました。
ご指摘の通り、利用している環境によっては、オプションの指定が必要になります。
WSLからWSL2 へアップグレードされた環境で、今後はWSL2をメインに利用していくのでしたら、以下を実行しておくのもありかと思います。
> wsl –set-default-version 2