Докер, монтирует тома как только для чтения
Я работаю с Docker, и я хочу установить папку dyanmic, которая сильно меняет (поэтому мне не нужно делать докеры для каждого исполнения, что было бы слишком дорого), но я хочу, чтобы эта папка была только для чтения, Однако изменение владельцев папок для кого-то другого работает, однако chown
требует доступа root
, который я бы не хотел показывать в приложении.
Когда я использую флаг -v
для монтирования, он дает то, что мне дает имя пользователя, я создал пользователя без root внутри изображения докеры, однако все файлы в томе с владельцем в качестве пользователя, который запускал докер, меняет в пользователь, который я даю из командной строки, поэтому я не могу делать только файлы и папки только для чтения. Как я могу это предотвратить?
Я также добавил mustafa ALL=(docker) NOPASSWD: /usr/bin/docker
, поэтому я могу перейти на другого пользователя через терминал, но все же у файлов есть разрешения для моего пользователя.
Ответы
Ответ 1
Вы можете указать, что том должен быть -v
только для чтения, добавив :ro
к переключателю -v
:
docker run -v volume-name:/path/in/container:ro my/image
Обратите внимание, что папка доступна только для чтения в контейнере и для чтения и записи на хосте.
2018 Править
Согласно документации по использованию томов, теперь есть другой способ монтирования томов с помощью переключателя --mount
. Вот как использовать это только для чтения:
$ docker run --mount source=volume-name,destination=/path/in/container,readonly my/image
докер-Compose
Вот пример того, как указать контейнеры только для чтения в docker-compose
:
version: "3"
services:
redis:
image: redis:alpine
read_only: true
Ответ 2
докер-компоновать
Вот правильный способ указать том только для чтения в docker-compose
:
version: "3"
services:
my_service:
image: my:image
volumes:
- type: volume
source: volume-name
target: /path/in/container
read_only: true
volumes:
volume-name:
https://docs.docker.com/compose/compose-file/#long-syntax-3