Для контекста:
докер --версия
Докер версии 20.10.7, сборка 20.10.7-0ubuntu5~20.04.2
тест 1: объем /мой объем
Вот мой Dockerfile
ОТ альпийского: последний
ПОЛЬЗОВАТЕЛЬ 1000:1000
ОБЪЕМ /myvolume
и команды сборки + запуска:
docker build -t myimage .
docker run --rm -it myimage
затем, один раз в контейнере:
/ $ кто
whoami: неизвестный uid 1000
/ $ ls -ld /мой объем/
drwxr-xr-x 2 root root 4096 8 марта 09:22 /myvolume/
/ $ коснуться /myvolume/тест
touch: /myvolume/test: Отказано в доступе
Пока неудивительно, что пользователь с UID 1000 не может писать на /мой объем
.
тест 2: объем /tmp
Мой докерфайл
ОТ альпийского: последний
ПОЛЬЗОВАТЕЛЬ 1000:1000
ОБЪЕМ /tmp
(те же команды сборки + запуска), а в контейнере:
/ $ кто
whoami: неизвестный uid 1000
/$ls-ld/тмп
drwxrwxrwt 2 root root 4096 24 ноября 09:20 /tmp
/ $ коснуться /tmp/тест
/ $ ls -l /tmp
всего 0
-rw-r--r-- 1 1000 1000 0 8 марта 09:23 тест
Теперь громкость изменилась на /tmp
, в него может писать пользователь с UID 1000.
Я знаю /tmp
обычно доступен для записи в GNU/Linux, но здесь это выглядит «волшебно» (что хорошо, только когда рядом Гарри Поттер), и мне интересно, будет ли:
a) Я что-то упускаю из того, как работают Docker и тома (пожалуйста, отправьте меня к соответствующей документации/учебникам)
б) это совпадение из-за моей настройки / чего-то не хватает, чтобы быть явным и перестать полагаться на значения по умолчанию
c) это недокументированная функция, которая может быть изменена в любое время без предварительного уведомления
d) это функция, о которой мне не удалось найти документацию, и я могу смело полагаться на тот факт, что при подключении тома к /tmp
, он всегда доступен для записи