Докер, монтировать тома только для чтения


Я работаю с Docker, и я хочу смонтировать папку dyanmic, которая сильно меняется (поэтому мне не нужно создавать докеры для каждого из них, что было бы слишком дорого), но я хочу, чтобы эта папка была только для чтения. Однако изменение владельцев папок на кого-то другого работает chown требует root доступ, который я бы не хотел предоставлять приложению.

когда я использую -v флаг для монтирования, он дает любое имя пользователя, которое я даю, я создал не корневого пользователя внутри docker image, однако все файлы в томе с владельцем в качестве пользователя, который запускал docker, изменяется на пользователя, которого я даю из командной строки, поэтому я не могу создавать файлы и папки только для чтения. Как я могу предотвратить это?

Я также добавил mustafa ALL=(docker) NOPASSWD: /usr/bin/docker, поэтому я мог бы перейти к другому пользователю через терминал, но все же файлы имеют разрешения для моего пользователя.

1 65

1 ответ:

вы можете указать, что Том должен быть доступен только для чтения, добавив :ro до -v переключатель:

docker run -v volume-name:/path/in/container:ro my/image

обратите внимание, что папка затем доступна только для чтения в контейнере и чтения-записи на хосте.

2018 Edit

по словам использовать документацию томов, теперь есть другой способ монтирования томов с помощью --mount переключатель. Вот как использовать это с только для чтения:

$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image

docker-compose

вот пример, как указать контейнеры только для чтения в docker-compose:

version: "3"
services:
  redis:
    image: redis:alpine
    read_only: true