Докер, монтировать тома только для чтения
Я работаю с Docker, и я хочу смонтировать папку dyanmic, которая сильно меняется (поэтому мне не нужно создавать докеры для каждого из них, что было бы слишком дорого), но я хочу, чтобы эта папка была только для чтения. Однако изменение владельцев папок на кого-то другого работает chown
требует root
доступ, который я бы не хотел предоставлять приложению.
когда я использую -v
флаг для монтирования, он дает любое имя пользователя, которое я даю, я создал не корневого пользователя внутри docker image, однако все файлы в томе с владельцем в качестве пользователя, который запускал docker, изменяется на пользователя, которого я даю из командной строки, поэтому я не могу создавать файлы и папки только для чтения. Как я могу предотвратить это?
Я также добавил mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
, поэтому я мог бы перейти к другому пользователю через терминал, но все же файлы имеют разрешения для моего пользователя.
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