Как я могу создать контейнерную root файловую систему, но разрешить запись в WORKDIR - PullRequest
0 голосов
/ 31 марта 2020

Я хочу сделать файловую систему root доступной только для чтения согласно этому ответу :

docker run --read-only ... myapp

Но мне также нужно разрешить приложению, работающему в контейнере, доступ в его папку /app. Приложению требуется некоторое временное хранилище, но мне нужно ограничить его доступ ко всему для безопасности.

1 Ответ

1 голос
/ 01 апреля 2020

Все, что вы монтируете в контейнер с опцией 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 будет работать нормально, если только можно начинать с пустого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...