基于Docker的Graylog权限

时间:2019-03-25 07:53:37

标签: docker file-permissions permission-denied user-permissions graylog

我有以下docker-compose.yml(稍作改动,但从here复制):

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运行它时,它失败了,因为graylogelasticsearch服务都无法访问/storage/graylog和{{1} } 分别。我需要更改的是:

  • /storage/elasticsearch
  • chmod 1000:1000 -Rv /storage/elasticsearch

在主机上。

因此出现两个问题:

  • 那是为什么?
  • 如何优雅地处理它?

2 个答案:

答案 0 :(得分:0)

Elasticsearch和Graylog都不以root用户身份在其容器中运行。

因此,如果您的用户/组将其装入容器,则他们的用户/组需要访问主机上的文件系统。

答案 1 :(得分:0)

compose文件创建数据卷,但是容器不使用它们!

原文:

volumes:
  - graylog_journal:/usr/share/graylog/data/journal

您的更改:

volumes:
  - /storage/graylog_journal:/usr/share/graylog/data/journal

这将在您的主机系统中创建数据目录,并且在您手中。