Все, что вы монтируете в контейнер с опцией docker run -v
, не является «частью файловой системы root» и может иметь собственный режим доступа. Если вам просто нужно немного пустого пространства внутри контейнера, вы можете использовать опцию docker run --tmpfs
для монтирования пустой файловой системы в памяти.
$ docker run --rm --read-only busybox \
> sh -c 'touch /tmp/foo && ls /tmp'
touch: /tmp/foo: Read-only file system
$ docker run --rm --read-only --tmpfs /tmp busybox \
> sh -c 'touch /tmp/foo && ls /tmp'
foo
Вы можете сделать то же самое с именованными томами:
$ docker volume create vol
vol
$ docker run --rm --read-only -v vol:/tmp busybox touch /tmp/foo
$ docker run --rm --read-only -v vol:/tmp busybox ls /tmp
foo
Вы не хотите сделать это с каталогом, содержащим исходный код вашего приложения. По соображениям безопасности, если вы достаточно заинтересованы в том, чтобы сделать файловую систему root доступной только для чтения, вы не хотите рисковать перезаписыванием кода приложения. Если код вашего приложения окажется в томе, Docker будет обрабатывать его как ценные пользовательские данные и отказываться от его обновления. Поэтому выберите для этого какой-то каталог, отличный от /app
(подкаталог /app/data
будет работать нормально, если только можно начинать с пустого).