WSL2(ubuntu)でdocker volumeの実態を探してみた


始めに

こんにちは。
純粋に、「どこ?」となったので探しました。
結果、厳密な物理的な場所を探すのは心が折れました。

なので、powershellから直接WSLが提供する仮想ファイルシステムからのアクセス方法をご紹介します。

前提

compose.ymlは以下のような感じ

services:
  ubuntu:
    build: ./docker/ubuntu
    volumes:
      - ./:/var/www
      - data-volume:/var/sample-data

volumes:
  data-volume:
  • Dockerfileはこうした
FROM ubuntu:22.04

## 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    curl \
    vim \
    nginx

## デフォルトコマンド
CMD ["nginx", "-g", "daemon off;"]

  • wslディストリビューション
PS C:\Users\nihonshu> wsl --list
Linux  Windows サブシステム ディストリビューション:
Ubuntu (既定)
docker-desktop
docker-desktop-data

まずは、普通に探す→見つからない

root@KIS:~##  docker volume ls
DRIVER    VOLUME NAME
local     sample-ubuntu_data-volume
root@KIS:~##
root@KIS:~## docker volume inspect sample-ubuntu_data-volume
[
    {
        "CreatedAt": "2023-12-12T10:36:51Z",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "sample-ubuntu",
            "com.docker.compose.version": "2.0.0",
            "com.docker.compose.volume": "data-volume"
        },
        "Mountpoint": "/var/lib/docker/volumes/sample-ubuntu_data-volume/_data",
        "Name": "sample-ubuntu_data-volume",
        "Options": null,
        "Scope": "local"
    }
]

/var/lib/docker/volumes/sample-ubuntu_data-volume/_data

にありそうだが、そんなモノは存在しない
wslコマンドでpowershellから入室→存在しない
もちろんwindowsにもない

linux系は素直にここにあります。

root@KIS:/var/lib## pwd
/var/lib
root@KIS:/var/lib## ls | grep docker
docker-desktop
root@KIS:/var/lib##

実際の場所(仮)

  • host OSであるwindowsから移動します。powershellから
cd \\wsl$\\docker-desktop-data\\version-pack-data\\community\\docker\\volumes

ここにあります。

PS Microsoft.PowerShell.Core\\FileSystem::\\\\wsl$\\docker-desktop-data\\version-pack-data\\community\\docker\\volumes> ls

    ディレクトリ: \\\\wsl$\\docker-desktop-data\\version-pack-data\\community\\docker\\volumes

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2023/12/12     19:36                sample-ubuntu_data-volume
-----l        2023/12/13      8:32              0 backingFsBlockDev
------        2023/12/13      8:32          65536 metadata.db

さらに奥に行くと、実態が存在します

PS Microsoft.PowerShell.Core\\FileSystem::\\\\wsl$\\docker-desktop-data\\version-pack-data\\community\\docker\\volumes\\sample-ubuntu_data-volume\\_data> ls

    ディレクトリ: \\\\wsl$\\docker-desktop-data\\version-pack-data\\community\\docker\\volumes\\sample-ubuntu_data-volume\\_data

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
------        2023/12/13     10:09             20 hogehogehogehoge

PS Microsoft.PowerShell.Core\\FileSystem::\\\\wsl$\\docker-desktop-data\\version-pack-data\\community\\docker\\volumes\\sample-ubuntu_data-volume\\_data>