Docker on MacのVolumeマウント先

  •  
  •  

Dockerのvolumeはどこにマウントされているか?と言うお話

$ docker volume inspect 
[
    {
        "CreatedAt": "2020-08-19T14:55:42Z",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "volume",
            "com.docker.compose.version": "1.26.2",
            "com.docker.compose.volume": "vol"
        },
        "Mountpoint": "/var/lib/docker/volumes/volume_vol/_data",
        "Name": "volume_vol",
        "Options": null,
        "Scope": "local"
    }
]

これで分かるじゃないか。/var/lib/docker/volumes/volume_vol/_dataだろ。と思った方は大間違い。

$ ls /var/lib/docker/volumes/volume_vol/_data
ls: /var/lib/docker/volumes/volume_vol/_data: No such file or directory

こういうオチが待っている。。。

ない。。。

googleさんに聞いてみると

「Docker for MacのDocker EngineはVM上で動いているので、このMountpointはMac上のPathではなくVM上のPathである」

ということらしい。

なのでscreenでVMに入ってみると良いらしい

$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
Can not exec '~/Library/Containers/com.docker.docker/Data/vms/0/tty': Permission denied

。。。

$ ls ~/Library/Containers/com.docker.docker/Data/vms/0/tty
----------  1 user  staff  12  7 30 00:00 /Users/gucchi/Library/Containers/com.docker.docker/Data/vms/0/tty

というわけで、Permissionを変えたりsudoしてみたりしたがダメ


こんな時はnsenterを使えってVMに入るらしい。

$ docker run -it --privileged --pid=host alpine nsenter -t 1 -m -u -n -I sh
# ls /var/lib/docker/volumes/volume_vol/_data
hello.txt

あった!

しかし毎度毎度Docker for Macの特殊な点に悩まされるなぁ。。。

コメントする