在Docker映像中运行Kibana会产生非根错误
我在尝试使用docker Compose在docker中设置(v7.6.0)时遇到问题 弹性搜索和日志存储启动良好,但Kibana立即存在,docker记录该容器报告:在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:
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的问题,所以我为此打开了一个问题