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の特殊な点に悩まされるなぁ。。。
コメントする