首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卷权限错误的Docker Elasticsearch容器

卷权限错误的Docker Elasticsearch容器
EN

Stack Overflow用户
提问于 2021-03-14 10:28:58
回答 1查看 152关注 0票数 0

我的elasticsearch容器有一个问题,当我让docker创建elasticsearch卷时,它是用错误的权限创建的,所以我遇到了一个问题,容器崩溃了。有没有办法在启动这个容器或类似的东西之前向我的机器添加一个sh命令来设置权限?还是我的问题的另一种解决方案?

代码语言:javascript
运行
复制
version: '3.1'
services:

  db:
    container_name: app_mysql
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./volumes/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: app
      MYSQL_PASSWORD: app
      MYSQL_DATABASE: app
    ports:
      - 33066:3306

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: app_elasticsearch
    environment:
      - xpack.security.enabled=false
      - discovery.type=single-node
      # - ELASTIC_PASSWORD=app
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - ./volumes/elasticsearch:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300

我的日志:

代码语言:javascript
运行
复制
docker-compose up  
Starting app_elasticsearch ... done
Attaching to app_elasticsearch
app_elasticsearch | OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
app_elasticsearch | uncaught exception in thread [main]
app_elasticsearch | {"type": "server", "timestamp": "2021-03-14T02:18:26,157Z", "level": "ERROR", "component": "o.e.b.ElasticsearchUncaughtExceptionHandler", "cluster.name": "docker-cluster", "node.name": "3879d18f5b22", "message": "uncaught exception in thread [main]", 
app_elasticsearch | "stacktrace": ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];",
app_elasticsearch | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:174) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125) ~[elasticsearch-cli-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "Caused by: org.elasticsearch.ElasticsearchException: failed to bind service",
app_elasticsearch | "at org.elasticsearch.node.Node.<init>(Node.java:615) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.node.Node.<init>(Node.java:257) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "... 6 more",
app_elasticsearch | "Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes",
app_elasticsearch | "at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]",
app_elasticsearch | "at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]",
app_elasticsearch | "at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]",
app_elasticsearch | "at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]",
app_elasticsearch | "at java.nio.file.Files.createDirectory(Files.java:693) ~[?:?]",
app_elasticsearch | "at java.nio.file.Files.createAndCheckIsDirectory(Files.java:800) ~[?:?]",
app_elasticsearch | "at java.nio.file.Files.createDirectories(Files.java:786) ~[?:?]",
app_elasticsearch | "at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:274) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:211) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:271) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.node.Node.<init>(Node.java:277) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.node.Node.<init>(Node.java:257) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.6.0.jar:7.6.0]",
app_elasticsearch | "... 6 more"] }
app_elasticsearch | ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];
app_elasticsearch | Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
app_elasticsearch |     at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
app_elasticsearch |     at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
app_elasticsearch |     at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
app_elasticsearch |     at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)
app_elasticsearch |     at java.base/java.nio.file.Files.createDirectory(Files.java:693)
app_elasticsearch |     at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:800)
app_elasticsearch |     at java.base/java.nio.file.Files.createDirectories(Files.java:786)
app_elasticsearch |     at org.elasticsearch.env.NodeEnvironment.lambda$new$0(NodeEnvironment.java:274)
app_elasticsearch |     at org.elasticsearch.env.NodeEnvironment$NodeLock.<init>(NodeEnvironment.java:211)
app_elasticsearch |     at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:271)
app_elasticsearch |     at org.elasticsearch.node.Node.<init>(Node.java:277)
app_elasticsearch |     at org.elasticsearch.node.Node.<init>(Node.java:257)
app_elasticsearch |     at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:221)
app_elasticsearch |     at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:221)
app_elasticsearch |     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349)
app_elasticsearch |     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
app_elasticsearch |     at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
app_elasticsearch |     at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
app_elasticsearch |     at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
app_elasticsearch |     at org.elasticsearch.cli.Command.main(Command.java:90)
app_elasticsearch |     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
app_elasticsearch |     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
app_elasticsearch | For complete error details, refer to the log at /usr/share/elasticsearch/logs/docker-cluster.log
app_elasticsearch exited with code 1

我知道我的问题是elasticsearch的所有权,因为如果我注释卷行,它会工作得很好。

我也没有mysql容器的问题...

以下是我的权限:

代码语言:javascript
运行
复制
ls -la volumes 
total 16
drwxr-xr-x  4 root  root  4096 mar 13 23:23 .
drwxrwxr-x 13 pedro pedro 4096 mar 13 23:18 ..
drwxr-xr-x  2 root  root  4096 mar 13 23:18 elasticsearch
drwxr-xr-x  6   999 root  4096 mar 13 23:23 mysql

如果我运行类似这样的命令:

代码语言:javascript
运行
复制
sudo chown $user:$user volumes/elasticsearch -R

然后就可以工作了,所以我相信docker是用root:root而不是$user:$user来创建这个目录的。有没有办法在不手动设置这些权限的情况下解决这个问题?谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-03-14 15:33:47

您可以在构建时定义user: root

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66620542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档