Docker для Mac, потеря данных при синхронизации делегированных привязок
Документация Docker для Mac по настройке производительности bind-mount говорит о следующем delegated
привязные крепления:
Если в файловой системе хоста присутствуют изменения в исходном каталоге монтирования, эти изменения могут быть потеряны при синхронизации делегированного монтирования с исходным каталогом хоста.
1) Означает ли это, что если у меня есть delegated
bind-mount в исходном каталоге моего проекта, тогда в какой-то момент мои незафиксированные изменения могут быть потеряны при синхронизации между контейнером и хостом? Как часто это происходит, и есть ли известные предпосылки для этого?
2) Правильно ли я понимаю, что эта проблема возникает только в случае, когда изменения из самого контейнера синхронизируются с хостом (а не иначе, когда изменения с хоста синхронизируются с контейнером), когда файл, измененный на хосте, перезаписывается с помощью тот же файл изменился на контейнере?
1 ответ
В основном это означает, что если хост изменил файл, а гость изменил файл (что он делает асинхронно в delegated
), то изменение гостя может перезаписать изменение хоста. В cached
гость не будет писать асинхронно, чтобы ситуация не возникала.
Однако, насколько я знаю, delegated
Монтирование еще не реализовано в Docker для Mac и ведет себя так же, как cached
, Вот проблема: https://github.com/docker/for-mac/issues/1592
Я не буду беспокоиться об исчезновении изменений исходного кода. Синхронизация от гостя к хосту асинхронна, но произойдет почти сразу. До тех пор, пока вы не пытаетесь редактировать файл, в который приложение пишет постоянно, вам, вероятно, не повезет.
Если вы хотите быть уверены или не ожидаете, что ваше приложение запишет в эту папку, используйте cached
, Как уже упоминалось выше, разницы пока нет.