在Docker映像中运行Kibana会产生非根错误

在Docker映像中运行Kibana会产生非根错误,docker,docker-compose,kibana,elastic-stack,Docker,Docker Compose,Kibana,Elastic Stack,我在尝试使用docker Compose在docker中设置(v7.6.0)时遇到问题 弹性搜索和日志存储启动良好,但Kibana立即存在,docker记录该容器报告: Kibana should not be run as root. Use --allow-root to continue. 这些元素的docker compose如下所示: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:

我在尝试使用docker Compose在docker中设置(v7.6.0)时遇到问题

弹性搜索和日志存储启动良好,但Kibana立即存在,docker记录该容器报告:

Kibana should not be run as root.  Use --allow-root to continue.
这些元素的docker compose如下所示:

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    environment:
      - discovery.type=single-node
    ports:
      - 9200:9200
    mem_limit: 2gb

  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.0
    environment:
      - discovery.type=single-node
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch

  logstash:
    image: docker.elastic.co/logstash/logstash:7.6.0
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    mem_limit: 2gb
    depends_on:
      - elasticsearch

如何禁用“以根用户身份运行”错误,或将应用程序设置为不以根用户身份运行?

我刚刚运行了此docker映像,一切都很好,我共享我的docker compose文件:

version: '3.7'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    container_name: elasticsearch
    environment:
       - node.name=node
       - cluster.name=elasticsearch-default
       - bootstrap.memory_lock=true
       - discovery.type=single-node
       - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ports:
      - "9200:9200"
    expose: 
      - "9200"
    networks:
      - "esnet"

  kibana:
    image: docker.elastic.co/kibana/kibana:7.6.0
    container_name: kibana
    ports:
      - "5601:5601"
    expose: 
      - "5601"
    networks:
      - "esnet"
    depends_on: 
      - elasticsearch

 logstash:
   image: docker.elastic.co/logstash/logstash:7.6.0
   ports:
     - "5000:5000/tcp"
     - "5000:5000/udp"
     - "9600:9600
   depends_on: 
     - elasticsearch
   networks:
     - "esnet"
networks: 
  esnet:

我也有同样的问题。我通过将入口点添加到Dockerfile的末尾来手动运行它

ARG ELK_VERSION  
FROM docker.elastic.co/kibana/kibana:${ELK_VERSION}
ENTRYPOINT ["./bin/kibana", "--allow-root"]
docker-compose.yml

version: '3.2'
# Elastic stack (ELK) on Docker https://github.com/deviantony/docker-elk
services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: changeme
      discovery.type: single-node
    networks:
      - elk

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      - "5002:5002/tcp"
      - "5002:5002/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    build:
      context: kibana/ ##############  Dockerfile ##############
      args:
        ELK_VERSION: $ELK_VERSION
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: nat

volumes:
  elasticsearch:

如果您没有Kibana的单独Dockerfile并且您只想在
docker compose
中设置启动参数,则语法如下:

kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.9.2
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    environment:
      - ELASTICSEARCH_URL=http://localhost:9200
    networks:
      - elastic
    entrypoint: ["./bin/kibana", "--allow-root"] 
这解决了在Windows容器上运行它的问题。

也就是说,我不知道为什么Kibana不应该作为root执行。

表示它作为
Kibana
用户运行。让人困惑的是,为什么它在您的终端以root用户身份运行。根据我在下面留下的评论,似乎我只是在“Windows容器”模式下运行时遇到了这个问题,使用了允许linux和Windows容器并排运行的实验性功能听起来我在Docker实验性Windows模式下运行ELK时遇到了问题,所以我为这个打开了一个问题,好吧,这在运行Linux容器时是有效的,但是我想使用Docker实验特性从Windows容器中拉入日志,并排运行Linux和Windows容器。在Windows容器模式下运行时,我首先遇到内存问题。可以通过下拉到Docker Compose 2.4并设置容器的mem限制来修复这些问题。然而,随后您遇到了我在第一篇文章中描述的根用户问题。听起来我遇到了在Docker实验Windows模式下运行ELK的问题,所以我为此打开了一个问题