运行 容器中的本地 kibana

Running a local kibana in a container

我正在尝试 运行 将 kibana 控制台与我的本地 elasticsearch(容器)一起使用 在 ElasticSearch documentation 我看到

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.2

这让我 运行 社区版在一个快速的衬里。

看着 kibana documentation 我只看到

docker pull docker.elastic.co/kibana/kibana:6.2.2

用 运行 替换 pull 它寻找 x-pack(我认为这意味着不是社区)并且找不到 ES

Unable to revive connection: http://elasticsearch:9200/

有没有一种可以轻松地在容器中本地设置 kibana 的工具? 我只需要使用控制台(Sense 替换)

如果你想在本地使用带有 elasticsearch 的 kibana docker,它们必须相互通信。为此,根据 doc,您需要 link 容器。 您可以使用 --name:

为 elasticsearch 容器命名
docker run \
  --name elasticsearch_container \
  --publish 9200:9200 \
  --publish 9300:9300 \
  --env "discovery.type=single-node" \
  docker.elastic.co/elasticsearch/elasticsearch:6.2.2

然后link这个容器到kibana:

docker run \
  --name kibana \
  --publish 5601:5601 \
  --link elasticsearch_container:elasticsearch_alias \
  --env "ELASTICSEARCH_URL=http://elasticsearch_alias:9200" \
  docker.elastic.co/kibana/kibana:6.2.2

端口 5601 在本地公开,可以从您的浏览器访问它。可以在监控部分查看elasticsearch的health是绿色的

编辑(2020 年 3 月 24 日):

选项 --link may eventually be removed 现在是 docker 的遗留功能。 重现相同事物的惯用方法是首先创建一个 user-defined 桥:

docker network create elasticsearch-kibana

然后在里面创建容器:

版本 6

docker run \
  --name elasticsearch_container \
  --network elasticsearch-kibana \
  --publish 9200:9200 \
  --publish 9300:9300 \
  --env "discovery.type=single-node" \
  docker.elastic.co/elasticsearch/elasticsearch:6.2.2
docker run \
  --name kibana \
  --publish 5601:5601 \
  --network elasticsearch-kibana \
  --env "ELASTICSEARCH_URL=http://elasticsearch_container:9200" \
  docker.elastic.co/kibana/kibana:6.2.2

版本 7

正如所指出的那样,版本 7 的环境变量发生了变化。现在是 ELASTICSEARCH_HOSTS

docker run \
  --name elasticsearch_container \
  --network elasticsearch-kibana \
  --publish 9200:9200 \
  --publish 9300:9300 \
  --env "discovery.type=single-node" \
  docker.elastic.co/elasticsearch/elasticsearch:7.6.2
docker run \
  --name kibana \
  --publish 5601:5601 \
  --network elasticsearch-kibana \
  --env "ELASTICSEARCH_HOSTS=http://elasticsearch_container:9200" \
  docker.elastic.co/kibana/kibana:7.6.2

User-defined 网桥在容器之间提供自动 DNS 解析,这意味着您可以通过容器名称相互访问。

用起来也很方便docker-compose
例如,存储在主目录中的以下文件允许使用一条命令启动 Kibana:
docker-compose up -d:

# docker-compose.yml

version: "2"
 kibana:
    image: "docker.elastic.co/kibana/kibana:6.2.2"
    container_name: "kibana"
    environment:
      - "ELASTICSEARCH_URL=http://<elasticsearch-endpoint>:9200"
      - "XPACK_GRAPH_ENABLED=false"
      - "XPACK_ML_ENABLED=false"
      - "XPACK_REPORTING_ENABLED=false"
      - "XPACK_SECURITY_ENABLED=false"
      - "XPACK_WATCHER_ENABLED=false"
    ports:
      - "5601:5601"
    restart: "unless-stopped"

此外,Kibana 服务可能是您在开发环境中的项目的一部分(如果使用 docker-compose)。