@bugsoff

Почему Докер не синхронизирует изменения в volume?

К одному из docker-контейров (с PHP) примонтирована локальная папка w:\src, доступно чтение/запись.
в docker-compose.yml монтируется так:
...
volumes:
      - ./:/usr/share/nginx/html/
...


docker inspect говорит:
...
 {
                "Type": "bind",
                "Source": "W:\\src",
                "Destination": "/usr/share/nginx/html",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
}
...


Иногда внутри контейнера Docker перестают появляться изменения файлов, если они сделаны извне контейнера (в хост-системе).
Если файлы менять внутри контенера — то в хост системе изменения сразу видны.

См. видео: https://youtu.be/GtYA4kmkTGE
1. слева примонтированный каталог в хост-системе, по середине - контейнер докера, справа - редактируется файл
2. вначале каталог пуст, в контейнере ls -la показывает что файлов нет
3. в текстовом редакторе создаём файл test.123 с содержимым 123
4. в каталоге хост системы он появился, в контейнере ls -la говорит что ничего нет, cat test.123 тоже ничего не выводит
5. добавляем содержимое в файл test.123, пробуем cat test.123 и внезапно в контейнере уже выводится содержимое файла, но ls -la по прежнему говорит, что файлов в каталоге нет
6. снова меняем содержимое файла test.123 — в контейнере cat test.123 говорит, что файл не поменялся.
и т.д.

Иногда такое лечится перезапуском контейнера, иногда перезапуском Docker Engine, иногда это не помогает.
Иногда начинает работать в обе стороны нормально, иногда опять перестаёт синхронизироваться.
Почему так?
  • Вопрос задан
  • 505 просмотров
Пригласить эксперта
Ответы на вопрос 1
akelsey
@akelsey
Что бы меньше иметь проблем (меньше компонентов и надстроек, меньше проблем), если хостовой машинкой необходимо иметь виндоус:
1. я бы не использовал Docker Desktop, удалил бы его (всё равно он использует WSL)
2. установил бы докер как сервис в WSL2, например как тут https://dev.to/bowmanjd/install-docker-on-windows-...
3. Монтировал бы линукс пути без всяких W:\\src
4. с windows подсистема линукс вроде бы доступна на smb share \\wsl
5. рассмотрел бы переход на линукс или хотя бы отдельно виртуалка под разработку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы