linux - 如何在主机本地存储 Elasticsearch 数据?

标签 linux docker ubuntu elasticsearch docker-compose

我遇到了这个非常相似的问题,
Docker bind elasticsearch volume in app folder
这是答案之一:
https://stackoverflow.com/a/69441244
他们在我需要提供的卷中的 docker-compose 文件中建议,
./esdata 表示当前目录。但是答案说我们需要授予权限 1000:1000 并且用户名是 elasticsearch:elasticsearch。
如何创建该权限和用户名。在我的 linux 系统中,我有一个名为 ubuntu 的个人用户名和一个 root。我没有名为 elasticsearch 的用户。请帮帮我。

services:
  elasticsearch:
    # Elasticsearch Instance
    container_name: gs-search
    image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2
    volumes:
      # Persist ES data in seperate "esdata" volume
      - ./esdata:/usr/share/elasticsearch/data
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms6g -Xmx6g"
      - discovery.type=single-node
      - xpack.security.enabled=true
      - ELASTIC_PASSWORD=$ELASTIC_PASSWORD
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      # Expose Elasticsearch ports
      - "9301:9300"
      - "9201:9200"

最佳答案

您可以按照 guide 在 Ubuntu 中轻松创建用户/组.然后,您可以使用用户 elasticsearch 登录并启动您的 docker-compose。但是,每次新容器以新身份运行时,您都不需要额外的用户帐户;如果您向将绑定(bind)到 Elasticsearch 的数据目录授予组权限,例如:

mkdir data
chmod 770 data
docker run -p 9200:9200 -p 9300:9300 -v ~/data:/usr/share/elasticsearch/data -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.16.2
这将在本地机器上运行良好。

关于linux - 如何在主机本地存储 Elasticsearch 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70476131/

相关文章:

python - 将 os.popen 命令转换为 subprocess.Popen 实例

linux - 在只读模式下使用 VIM 作为 cscope 中的查看器

mongodb - 如何使用 docker-compose 存储 MongoDB 数据

docker - 如何使用 docker for Windows(测试版)设置 xdebug 和 PhpStorm

ubuntu - 柯南从容器内部失败,出现 "sudo: not found"错误

python - 有没有办法同时使用 fabric run() 和 sudo() ?

在控制进入共享库之前捕获系统调用

amazon-web-services - 从Docker Cloud部署Docker容器

ubuntu - 标准输入的重定向似乎改变了 Dyalog APL 程序的行为(当使用名为 dyalog 的符号链接(symbolic link)调用 mapl 时)

c# - 如何在 C# 中引用 ubuntu MATLAB 运行时库?