0
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環境でのn8nのデータ保存先とバージョンアップの挙動を整理してみた

Posted at

最近、n8nをDocker Composeで運用している中で「バージョンアップしてもデータは残るの?」「どこにデータが保存されているの?」という疑問を持ちました。
同じように悩む方もいると思うので、整理した内容を共有します。

前提: 環境構成

今回の環境は次の通りです。

  • Windows 11
  • Docker Desktop(WSL2 backend有効)
  • WSL2ディストリ: Ubuntu
  • n8n + Traefikをdocker-compose.ymlで起動

docker-compose.ymlの一部(n8nサービス)

volumes:
  - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
    external: true

ここで気になるのが、この n8n_data の実態。

「どこに保存されてるんだろう?」「ホストから直接見られるの?」というのが今回のテーマです。

いきなり結論

Docker Desktop + WSL2の場合、

n8n_dataの実体はWindowsホストの ext4.vhdx 仮想ディスク内に保管されていて、ホストやWSL2から直接は見えない

です。

ただし、Dockerコンテナ内部からは問題なく確認・操作できます。

確認フローとポイント

以下の手順で調べていきました。

1. Docker Volumeの存在確認

docker volume ls

n8n_data がリストに出ていれば、ボリュームは存在。

2. マウントポイント確認

docker volume inspect n8n_data

出力例:

"Mountpoint": "/var/lib/docker/volumes/n8n_data/_data"

これを見ると一見「/var/lib/docker/volumes」にあるように見えます。

3. ホストから直接確認

WSL2シェルで

ls -la /var/lib/docker/volumes

→「そんなディレクトリはない」「空」となる。

ここで混乱。

4. Dockerがどこで動いているか確認

docker info

Operating System: Docker Desktop
と出ていれば、Docker Desktopが管理するDocker Engineを使っています。

この場合、

  • WSL2ディストリには実体がない
  • Windowsホストにも直接パスがない

という構造になります。

5. コンテナ内部から確認

docker exec -it n8n /bin/sh
ls -la /home/node/.n8n

すると中には

  • database.sqlite
  • config
  • binaryData/
  • 各種ログ

が存在。
ここが実際に永続化されているディレクトリです。

これが一番確実な確認方法です。

どこに実体があるの?

Docker Desktopの場合、内部的には

C:\Users\あなたのユーザー\AppData\Local\Docker\wsl\data\ext4.vhdx

という仮想ディスクにまとめて格納されています。
このファイルは仮想マシン上のext4ファイルシステムで管理されており、ホストOSから直接中身を覗くことはできません。

「/var/lib/docker/volumes/n8n_data/_data」と表示されるのは「Docker Engineの中での仮想パス」です。

データのバックアップはどうする?

コンテナ経由で取るのがベストです。

例:

docker exec n8n tar czf /tmp/n8n_backup.tar.gz -C /home/node/.n8n .
docker cp n8n:/tmp/n8n_backup.tar.gz ./n8n_backup.tar.gz

これで、WindowsやWSL2にtar.gzで取得できます。

バージョンアップしてもデータは残るの?

これもよくある不安。

結論: 残ります

理由はシンプルで、

  • コンテナは入れ替わる
  • ボリュームは別で管理されている

からです。

手順としては

docker-compose pull
docker-compose up -d

とするだけ。

再起動後も n8n_data ボリュームが同じように /home/node/.n8n にマウントされ、database.sqliteが読み込まれます。

それでも不安なら、上の手順でバックアップを取ってから更新しましょう。

ホストから直接見えるようにしたい場合

どうしてもWindowsのエクスプローラから中身を見たい場合は、bind mountに変更する方法があります。

docker-compose.ymlで

volumes:
  - /mnt/c/Users/あなたのユーザー/n8n_data:/home/node/.n8n

のようにホストパスを指定すれば、Cドライブにファイルが作られます。

ただし、I/Oパフォーマンスが落ちる可能性があるので、運用上許容できるか検討が必要です。

まとめ

  • Docker Desktop + WSL2では、ボリュームの実態はext4.vhdxに保管される
  • ホストやWSL2から直接見えないのは正常
  • コンテナ内部では問題なく確認・操作できる
  • バージョンアップしてもデータは残る
  • バックアップはdocker cpで取得できる

同じ構成で運用している方の参考になれば幸いです!


何か気になる点があればぜひコメントください。

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