我是Docker世界的新手,正在尝试在Docker上运行ElasticSearch堆栈。我可以将ELK作为容器启动,并且可以完美运行。

docker run -v /var/lib/docker/volumes/elk-data:/var/lib/elasticsearch \
-v /var/lib/docker/volumes/elk-data:/var/log/elasticsearch \
-p 5601:5601 -p 9200:9200  -p 5044:5044 \
--name elk sebp/elk

我正在使用journalbeat将指标转发到ElasticSearch服务并在Kibana中进行可视化。

我可以使用以下命令将journalbeat作为服务运行:
sudo docker service create --replicas 2 --mount type=bind,source=/opt/apps/shared/dev/docker/volumes/journalbeat/config/journalbeat.yml,target=/journalbeat.yml --mount type=bind,source=/run/log/journal,target=/run/log/journal --mount type=bind,source=/etc/machine-id,target=/etc/machine-id --constraint node.labels.nodename==devlabel --name journalbeat-svc mheese/journalbeat:v5.5.2

有什么方法可以将ELK作为服务运行?这样我们就可以启动2个容器-1个在Master Swarm上,另一个在Worker Node上。

最佳答案

ELK表示Elasticsearch,Logstash和Kibana,因此必须运行3个服务。在Docker群中,一个服务有零个或多个实例,但是每个实例都是一个基于相同Dockerfile的容器。

因此,为了将ELK作为服务运行,您必须在同一容器中启动Elasticsearch,Logstash和Kibana。尽管从理论上讲是可能的,但不建议这样做(每个容器应有一个过程)。

相反,您应该创建3个服务,其中一个用于Elasticsearch,Logstash和Kibana。

关于docker - 是否可以将ELK作为Docker服务运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49567870/

10-16 09:19
查看更多