#docker #file-permissions #permission-denied #user-permissions #graylog
#docker #файл-разрешения #в разрешении отказано #пользователь-разрешения #серый журнал
Вопрос:
У меня есть следующее docker-compose.yml
(слегка измененное, но скопированное отсюда):
version: '2'
services:
mongodb:
image: mongo:3
volumes:
- /storage/mongo_data:/data/db
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1
volumes:
- /storage/es_data:/usr/share/elasticsearch/data
environment:
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
graylog:
image: graylog/graylog:3.0
volumes:
- /storage/graylog_journal:/usr/share/graylog/data/journal
environment:
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
links:
- mongodb:mongo
- elasticsearch
depends_on:
- mongodb
- elasticsearch
volumes:
mongo_data:
driver: local
es_data:
driver: local
graylog_journal:
driver: local
Проблема в том, что когда я запускаю его с docker-compose
, происходит сбой, поскольку обе службы graylog
и elasticsearch
не имеют доступа к /storage/graylog
и /storage/elasticsearch
соответственно. Что мне нужно изменить, так это сделать:
chmod 1000:1000 -Rv /storage/elasticsearch
chmod 1100:1100 -Rv /storage/graylog
на главном компьютере.
Итак, возникают два вопроса:
- почему это?
- как с этим элегантно справиться?
Ответ №1:
Elasticsearch и Graylog оба не запускаются от имени root внутри своего контейнера.
Именно по этой причине их пользователю / группе требуется доступ к файловой системе на хосте, если вы монтируете ее в контейнер.
Комментарии:
1. Хорошо, спасибо. Как я могу обработать это в моем docker-compose, чтобы оно запускалось «из коробки»?
2. с помощью docker это невозможно сделать.
Ответ №2:
Файл compose создает тома для данных, но контейнеры их не используют!
Оригинал:
volumes:
- graylog_journal:/usr/share/graylog/data/journal
Ваши изменения:
volumes:
- /storage/graylog_journal:/usr/share/graylog/data/journal
Это создаст каталог данных в вашей хост-системе и будет в ваших руках.