【追記あり】Dockerイメージの保存先を変更する
追記(2023.04.14)
4.16.3を使うと回避できるとの情報あり(未確認)
こちらからダウンロードできる
追記(2023.03.27)
ジャンクションを作る方法で保存先を変更できた。
まず、Dockerをアンインストールし、C:\ProgramData\Docker
とC:\Users\<ユーザ名>\AppData\Local\Docker
フォルダを削除
配置したいドライブにフォルダを作成
(例:D:\Data\Docker\ProgramData_Docker
, D:\Data\Docker\AppData_Local_Docker
)
ジャンクションを作成
mklink /j C:\Users\<ユーザ名>\AppData\Local\Docker D:\Data\Docker\ProgramData_Docker
mklink /j C:\ProgramData\Docker D:\Data\Docker\AppData_Local_Docker
インストール先にDドライブを指定してDockerをインストール
start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker
インストール先が変わってdocker.exe
にパスが通らなくなるので、D:\Docker\resources\bin
をPATH環境変数に追加しておく
追記(2023.03.16)
最近、イメージの保存先を変えてもデフォルトに戻る現象が発生しているらしい
自分の環境でも保存先がデフォルトに戻っていた。
DDの設定画面を見ると「Disk image location」の項目があり(前もあった?)、C:\Users\ユーザー名\AppData\Local\Docker\wsl
に設定されていた。
「Browse」を押すとフォルダを選択できて場所が変更できそうだったが、フォルダを指定して再起動するとこのフォルダがもとに戻ってしまう
はじめに
Dockerを使ってイメージをビルドしたりして遊んでいると、知らず知らずのうちにCドライブを圧迫してしまっている。そんな状態でdocker buildをすると、Windows側のシステムメッセージで「空き領域がありません」と怒られてしまう。空いたドライブに保存先を変更する。
手順
環境
- Windows 10
デフォルトの保存先
イメージやコンテナ
%LocalAppData%\Docker\wsl\data\ext4.vhdx
37.9GBくらい(めちゃ使ってる!)
Dockerエンジン
%LocalAppData%\Docker\wsl\distro\ext4.vhdx
127MBくらい
これらの保存先を、Dドライブに移す。
Docker Desktop for Windowsの停止
起動している場合は、システムトレイからクジラマークを右クリックして「Quit Docker Desktop」を選択し、停止させる。
PowerShell上でdocker-desktop-data
とdocker-desktop
が停止したかを確認
❯ wsl -l -v
NAME STATE VERSION
docker-desktop-data Stopped 2
docker-desktop Stopped 2
保存先フォルダ作成
Dドライブに置きたいので、Dドライブの適当な場所にフォルダを作成する。
以下の場所に作成。
Dockerデータエクスポート
作成したフォルダにエクスポートする。
❯ wsl --export docker-desktop .\docker-desktop\docker-desktop.tar
❯ wsl --export docker-desktop-data .\docker-desktop-data\docker-desktop-data.tar
以前の保存先の設定を解除
❯ wsl --unregister docker-desktop
登録を解除しています...
❯ wsl --unregister docker-desktop-data
登録を解除しています...
ここまで実行すると、wsl -l -v
でWSL環境のリストを表示したときにdocker-desktop
とdocker-desktop-data
が表示されなくなる。
出力したtarイメージをインポート
--version 2
を指定することでWSL2としてインポートする。
# wsl --import <名前> <インストール先> <tarファイル>
❯ wsl --import docker-desktop .\docker-desktop\ .\docker-desktop\docker-desktop.tar --version 2
❯ wsl --import docker-desktop-data .\docker-desktop-data\ .\docker-desktop-data\docker-desktop-data.tar --version 2
<インストール先>に指定した場所でtarファイルが解凍され、vhdxファイルが配置される。
もう一度wsl -l -v
で確認すると、インポートした名前で一覧に表示されている。
❯ wsl -l -v
NAME STATE VERSION
docker-desktop-data Stopped 2
docker-desktop Stopped 2
不要なファイルを削除
残す必要も無ければ、インポートに使ったtarファイルを削除しておく。
❯ del .\docker-desktop.tar
❯ del .\docker-desktop-data.tar
また、変更前のパス%LocalAppData%\Docker\wsl\
以下にあったもともとのボリュームファイル(.vhdx)は、wsl --unregister
を実行した時点で削除される。
最後に
何回か同じようなことやってるような気がするのは、多分Dockerの調子が悪くて再インストールすると、保存先が元通りになっているからだと思う。
今後は再インストールしたときも保存先がどこになっているか気をつけよう。
Discussion