12
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Docker+Windows】データ保存先の変更

Last updated at Posted at 2023-01-15

はじめに

Dockerをドカドカ使っているうちに、Dockerさん容量的に邪魔なのでどっかに移動してもらえませんか?ということが発生した時のための記録です。

「Docker」「保存先」「変更」あたりの言葉で検索すれば色々出てきますが、こういった情報はたくさんあって悪いものではないでしょう・・・ということで記します。

ご注意

このドキュメントをアップするにあたって3回ほど実験しましたが、世に数多ある環境全てで検証したわけではありません。長期の検証をしたわけではありません。
大事なコンテナがなくなった!をはじめ、あらゆることに責任を持てませんので自己責任でお願いします。
(少なくとも私は試してみるにあたりDocker Desktopを再インストールするネタを踏みました。。)

対象と今回の検証環境

今回はWindows向けということで。

以下、検証環境です。(多少のバージョン違いであれば特に差違はないと思いますが、あくまでも無保証で。)

Windows10のバージョンは以下。

コマンドプロンプト
winver

image.png

WSL2です。

コマンドプロンプト
wsl -l -v

image.png

Docker Desktopを使用。
Dockerのバージョンです。
image.png

概要

以下のような手順で行います。

  1. Dockerのイメージ保存場所を確認する
  2. ※ここで大事な決断:コンテナが入っているほうのイメージだけ移動しよう
  3. Dockerを停止する
  4. Dockerのイメージファイルをエクスポートする
  5. DockerをWSLから削除する
  6. DockerのイメージをWSLにインポートする
  7. Dockerを起動する
  8. お片付け

具体的には
C:\Users\(user)\AppData\Local\Docker\wsl にあるデータを
D:\Docker\wslに移動する想定で話を進めます。

Dockerのイメージ保存場所を確認する

Docker Desktopインストール直後のDockerのイメージの格納先は %LOCALAPPDATA%\Docker\wsl です。

ひとまず場所を確認しましょう。

コマンドプロンプト
echo %LOCALAPPDATA%

image.png

「distro」と「data」フォルダーがあります。
どちらの中にも「ext4.vhdx」という仮想イメージが入っていますが、
「distro」のほうがDockerを動かしているイメージ、「data」のほうが具体的にコンテナが入っている仮想イメージになります。
image.png

※ここで大事な決断:コンテナが入っているほうのイメージだけ移動しよう

このドキュメントの意義はここになるかもしれません・・・。

結果「data」「distro」両方移動できたんですが、なぜか%LocalAppData%のほうに「distro」だけイメージの保存場所が戻り、Docker Desktopを再起動したらDocker起動せず orz ⇒ Docker Desktopを再インストールするハメに。

今回の目的は「保存する場所が足りないから移動したいぜ!」なので、コンテナの入っているほうのイメージだけ移動できればヨシ!ということで「data」の中身だけ移動することとします。

原因が特定でき次第ドキュメントの更新は行いたいですが、今のところ不明です。。

※もう全部移動したくない?と思ったものの、ググった結果dataのみ移動の記載もチラホラだったので、ひょっとして同じケースにハマった方々だったのかも?と今更ながら思いました。(感想文)

Dockerを停止する。

タスクトレイにいるDocker Desktopアイコンを右クリック⇒コンテキストメニュー⇒「Quit Docker Desktop」でDocker停止。
image.png

docker-desktop(Dockerご本尊)、docker-desktop-data(コンテナが入っているほう)が停止していることを確認します。

コマンドプロンプト
wsl -l -v

image.png

Dockerのイメージファイルをエクスポートする

容量的に限界なCドライブを見限り、Dドライブに移動する・・・というシナリオで進めます。

とりあえず「D:\Docker\wsl」に「data」のフォルダーを作って、こちらに移動しす。
image.png

コンテナの数次第では結構時間かかると思います。

コマンドプロンプト
wsl --export docker-desktop-data D:\Docker\data\docker-desktop-data.tar

DockerをWSLから削除する

以下のコマンドを叩くと、WSLからdocker-desktop-dataの登録が削除されます。
※注意:%LocalAppData%Docker\wsl\data内部の.vhdxも実際に削除されます。

コマンドプロンプト
wsl --unregister docker-desktop-data 

docker-desktop-dataの登録が削除されていることを確認。

コマンドプロンプト
wsl -l -v

DockerのイメージをWSLにインポートする

フルパスでイメージを指定ではなく、ディレクトリ指定とファイル名指定が別れているのでご注意を。
image.png
またWSL2なので「--version 2」を付けるところが肝です。

コマンドプロンプト
wsl --import docker-desktop-data D:\Docker\data\ docker-desktop-data.tar --version 2
コマンドプロンプト
wsl -l -v

docker-desktop-dataが再登録されます。
image.png

Dockerの起動

お好きな方法で。(私は素直にDocker Desktopを起動。)

動作の確認。docker-desktopとdocker-desktop-dataがRunningになっていれば起動成功。

コマンドプロンプト
wsl -l -v

image.png

お片付け

登録が終わればtarはお役御免なので削除してもOKです。(しばらく不安がある時&ストレージに余裕があるなら、しばらく残してもよいでしょう。)

image.png

最期に

「Docker」「保存先」「変更」あたりの言葉で検索すれば何か出てくるだろう・・・おっけーおっけー、と軽いノリでできたのも、先んじて色々書いていただいた方のおかげ、感謝です。

参考

  1. WSL2 Dockerのイメージ・コンテナの格納先を変更したい (WSL2のvhdxファイルを移動させたい)
  2. 【Windows】 Dockerイメージの保存場所を変更する方法
  3. WSL2のLinuxおよびDockerイメージ格納先を任意のディレクトリに移動する
  4. WSL Docker のデータ保存場所を変更する
  5. 標準機能だけでWSLを好きな場所にインストールする
  6. Docker Desktop for Windows のデータを別のドライブに移動する
12
21
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
12
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?