通常 docker は -v /foo としてコンテナを起動した後にそのコンテナを docker rm
して、新たに docker run
で作りなおすと /foo の中身は引き継がない。
しかし、docker-compose を利用するとこれが引き継がれる。なぜかを調べてみた(docker-compose は stop/start ではなくちゃんと作りなおしているので修正した設定などが反映される)。
- -v で指定した場合(や Dockerfile の VOLUME で指定している場合)
/var/lib/docker/vfs/dir
に ID のディレクトリが掘られてそこが bind-mountされる - 対象コンテナは rm されない限りここを参照する。
- 対象コンテナが rm されると紐付け(config.json)が消えるが、データは消されない(ただ当然どのコンテナからも通常アクセス出来ない)