Ошибка открытия хранилища docker-compose: ошибка доступа запрещена при запуске - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь выполнить мой docker-compose.yml файл, который содержит настройки prometheus и grafana.

Вот мой docker-compose.yml файл:

version: '2'
services:
  prometheus:
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - /prometheus:/prometheus
    command: 
      - --config.file=/etc/prometheus/prometheus.yml 


  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - /var/lib/grafana:/var/lib/grafana

Всякий раз, когда я ввожу команду docker-compose -f docker-compose.yml up для ее запуска, я сталкиваюсь с такого рода ошибками о разрешении:

prometheus_1  | level=error ts=2019-06-30T16:14:42.690Z caller=main.go:723 err="opening storage failed: lock DB directory: open /prometheus/lock: permission denied" 
prometheus_1  | level=error ts=2019-06-30T16:26:11.897Z caller=main.go:723 err="opening storage failed: mkdir data/: permission denied"

Я не знаю, как решить эту проблему, я уже искал проблемы с github и другие вопросы по stackoverflow, но, к сожалению, ни один из них не помог!

1 Ответ

1 голос
/ 30 июня 2019

Если вам не нужен доступ с хоста к этим файлам томов, используйте именованный том вместо монтирования хоста. Docker инициализирует содержимое указанного тома, включая права доступа и владельца, избегая проблем с разрешениями, таких как:

version: '2'

volumes:
  prometheus:
  grafana:

services:
  prometheus:
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - prometheus:/prometheus
    command: 
      - --config.file=/etc/prometheus/prometheus.yml 

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana:/var/lib/grafana

Для общего решения проблем с разрешениями при монтировании хоста можно использовать скрипт fix-perms в моем образе docker-base , а также точку входа и изменения в том, как запускается контейнер, для динамически настраивать идентификатор пользователя внутри контейнера в соответствии с именем монтирования тома.

...