Файлы в папке привязки Docker не обновляются - PullRequest
0 голосов
/ 30 ноября 2018

Я использую docker bind mount для сопоставления папки хоста /dev/serial/, созданной Ubuntu (которая содержит идентификационные символические ссылки на последовательные устройства, такие как /dev/ttyUSB0).Я использую команду запуска полного контейнера Docker:

docker run -d --restart always --privileged=true -v /dev/serial:/dev/serial DOCKER_IMAGE_NAME

При первом запуске это работает нормально, однако, если последовательное устройство отключено и повторно подключено, символические ссылки воссоздаются.Это изменение не распространяется в Docker-контейнер, и вместо этого Docker-контейнер находит пустую папку /dev/serial.Я протестировал создание файла вручную на хосте и в контейнере докера в этом каталоге, и, как ни странно, в обоих случаях изменение одного не было обновлено в другом.

Том отображается как

{
    "Type": "bind",
    "Source": "/dev/serial",
    "Destination": "/dev/serial",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
}

РЕДАКТИРОВАТЬ: Ubuntu создает символические ссылки в двух каталогах, by-path и by-id под папкой /dev/serial.

1 Ответ

0 голосов
/ 30 ноября 2018

Связывание монтируется на основе inode, и когда файл удаляется и создается заново, связывание монтируется.Эти изменения не распространяются на bind-mount до перезапуска контейнера, поэтому он выбирает новый индекс.

Решение для этого случая (файлы удаляются и воссоздаются) - вместо этого монтировать родительский каталог, поэтому вваш случай вы можете установить с помощью -v /dev:/dev.Конечно, это подвергнет / dev воздействию контейнера, поэтому обращайтесь с ним осторожно.

...