Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch Elasticsearch 5.1和Docker-如何正确配置网络以从主机访问Elasticsearch_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Docker - Fatal编程技术网 elasticsearch Elasticsearch 5.1和Docker-如何正确配置网络以从主机访问Elasticsearch,elasticsearch,docker,elasticsearch,Docker" /> elasticsearch Elasticsearch 5.1和Docker-如何正确配置网络以从主机访问Elasticsearch,elasticsearch,docker,elasticsearch,Docker" />

elasticsearch Elasticsearch 5.1和Docker-如何正确配置网络以从主机访问Elasticsearch

elasticsearch Elasticsearch 5.1和Docker-如何正确配置网络以从主机访问Elasticsearch,elasticsearch,docker,elasticsearch,Docker,使用Docker public repo中的Elasticsearch:latest(v5.1),我创建了自己的包含大脑的图像。我现在正在尝试正确配置Elasticsearch网络,以便我可以从大脑连接到Elasticsearch。在我创建的容器内运行的Cerbero在我的主机上正确渲染: 提交映像后,我使用以下内容创建了Docker容器: sudo docker run -d -it --privileged --name es5.1 --restart=always \ -p 9200:92

使用Docker public repo中的Elasticsearch:latest(v5.1),我创建了自己的包含大脑的图像。我现在正在尝试正确配置Elasticsearch网络,以便我可以从大脑连接到Elasticsearch。在我创建的容器内运行的Cerbero在我的主机上正确渲染:

提交映像后,我使用以下内容创建了Docker容器:

sudo docker run -d -it --privileged --name es5.1 --restart=always \
-p 9200:9200 \
-p 9300:9300 \
-p 9000:9000 \
-v ~/elasticsearch/5.1/config:/usr/share/elasticsearch/config \
-v ~/elasticsearch/5.1/data:/usr/share/elasticsearch/data \
-v ~/elasticsearch/5.1/cerebro/conf:/root/cerebro-0.4.2/conf \
elasticsearch_cerebro:5.1 \
/root/cerebro-0.4.2/bin/cerebro
~/elasticsearch/5.1/config中的my elasticsearch.yml当前指定了以下网络和发现条目:

network.publish_host: 192.168.1.26
discovery.zen.ping.unicast.hosts: ["192.168.1.26:9300"]
我还尝试了0.0.0.0,但没有为这些设置指定默认为环回的值。此外,我还尝试使用一组值指定network.host。无论我如何设置,elasticsearch都会在启动时记录:

[info] play.api.Play - Application started (Prod)
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
[error] p.c.s.n.PlayDefaultUpstreamHandler - Cannot invoke the action
java.net.ConnectException: Connection refused: localhost/127.0.0.1:9200
… cascading errors because of this connection refusal...
无论我如何设置elasticsearch.yml networking,elasticsearch启动时的错误消息都不会更改。我验证了elasticsearch.yml正在Docker容器内提取。请让我知道我的配置是否出错

经过几天的斗争,我似乎在回答我自己的问题!问题是elasticsearch没有在容器内部启动。为了确定这一点,我在容器中安装了一个终端:

docker exec -it es5.1 bash
进入容器后,我检查了服务状态:

service elasticsearch status
对此,操作系统的回应是:

[失败]elasticsearch未运行…失败

我从以下几点开始:

service elasticsearch start

我添加了一个脚本,我将从docker run调用它来启动elasticsearch和Cerbero,这应该可以实现。但是,我仍然想知道是否有更好的方法来配置它。

我制作了一个github docker compose repo,它将启动elasticsearch、kibana、logstash和Cerbero集群

========================================================================

另一方面,关于实际问题(弹性搜索不工作)

要使elasticsearch和大脑在一个docker容器中工作,需要使用主管


将更新更多详细信息

根本不需要使用supervisor。解决此问题的一个非常简单的方法是使用docker compose并将Elasticsearch和Cerbero捆绑在一起,如下所示:

docker-compose.yml:

version: '2'

services:

  elasticsearch:
    build: elasticsearch
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx1500m -Xms1500m"
    networks:
      - elk

  cerebro:
    build: cerebro
    volumes:
      - ./cerebro/config/application.conf:/opt/cerebro/conf/application.conf
    ports:
      - "9000:9000"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge
elasticsearch/Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.1
FROM yannart/cerebro
大脑/Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.1
FROM yannart/cerebro

然后运行
docker compose build
docker compose up
。当一切开始时,您可以访问ES at和Cerbero at

您肯定不希望服务在docker容器中运行。您确实希望Elasticsearch进程作为唯一的进程在foregraound中运行。服务和cron作业不会运行在容器内。谢谢。我想你已经意识到了这个问题,我正在尝试在容器中运行ES作为服务。谢谢你,Shuliyey!这正是我需要的。