Что происходит, когда вы перемещаете папку, которую использует том контейнера Docker? - PullRequest
2 голосов
/ 14 мая 2019

Скажем, я запускаю контейнер примерно так:

docker run -v /host/folder:/data some-image

если мы запустим mv /host/folder /host/folder2, я уверен, что произойдет что-то плохое, и единственное решение - остановить контейнер и перезапустить его?

1 Ответ

1 голос
/ 14 мая 2019

Docker использует bind mounts a mount --bind, чтобы сделать тома доступными.

Bind mounts очень похожи на жесткие ссылки.Если вы жестко связываете foo с bar с помощью ln foo bar, вы можете переименовать или удалить foo, и это не повлияет на bar, поскольку оба файла указывают на один и тот же индекс.Аналогично, если вы связываете foo с bar с помощью mount --bind foo bar, перемещение или удаление foo/ не повлияет на bar/.

Давайте рассмотрим две директории тестирования foo и bar:

$ mkdir foo bar
$ touch foo/FOO bar/BAR
$ ls foo/
FOO
$ ls bar/
BAR

Если мы смонтируем foo поверх bar, а затем переименуем foo, bar не изменится:

$ sudo mount --bind foo bar
$ ls bar/
FOO
$ mv foo foo.renamed
$ ls bar/
FOO
...