bash - 无法在docker中访问Windows Linux容器的Elasticsearch

标签 bash docker elasticsearch docker-for-windows docker-desktop

我主要在Windows上使用Bash作为子系统,为Windows(版本17.06.0-ce-win19(12801))安装了docker,并将其设置为Linux容器。

我正在尝试通过以下命令启动它

sudo docker run -d -p 9200 elasticsearch:2.3.5

如果我尝试通过bash上的curl访问它,或者在浏览器中找不到它。我尝试了以下操作:
  • 本地主机:9200
  • 127.0.0.1:9200
  • (容器ip地址):9200 [通过docker network inspect网桥获得]
  • (我的本地IP地址):9200 [ifconfig]


    • docker logs e727aa95a49d
      • [2017-07-30 01:07:50,114][WARN ][bootstrap ] unable to install syscall filter: seccomp unavailable: your kernel is buggy and you should upgrade
      • [2017-07-30 01:07:50,296][INFO ][node ] [Alysande Stuart] version[2.3.5], pid[1], build[90f439f/2016-07-27T10:36:52Z]
      • [2017-07-30 01:07:50,296][INFO ][node ] [Alysande Stuart] initializing ...
      • [2017-07-30 01:07:51,046][INFO ][plugins ] [Alysande Stuart] modules [reindex, lang-expression, lang-groovy], plugins [], sites []
      • [2017-07-30 01:07:51,066][INFO ][env ] [Alysande Stuart] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/sda1)]], net usable_space [54.3gb], net total_space [58.8gb], spins? [possibly], type s [ext4]
      • [2017-07-30 01:07:51,066][INFO ][env ] [Alysande Stuart] heap size [1007.3mb], compressed ordinary object pointers [true]
      • [2017-07-30 01:07:52,684][INFO ][node ] [Alysande Stuart] initialized
      • [2017-07-30 01:07:52,685][INFO ][node ] [Alysande Stuart] starting ...
      • [2017-07-30 01:07:52,852][INFO ][transport ] [Alysande Stuart] publish_address {172.17.0.2:9300}, bound_addresses {0.0.0.0:9300}
      • [2017-07-30 01:07:52,857][INFO ][discovery ] [Alysande Stuart] elasticsearch/TIf_RDG_SpqbfJ_rJmfizA
      • [2017-07-30 01:07:55,920][INFO ][cluster.service ] [Alysande Stuart] new_master {Alysande Stuart}{TIf_RDG_SpqbfJ_rJmfizA}{172.17.0.2}{172.17.0.2:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
      • [2017-07-30 01:07:55,972][INFO ][http ] [Alysande Stuart] publish_address {172.17.0.2:9200}, bound_addresses {0.0.0.0:9200}
      • [2017-07-30 01:07:55,972][INFO ][node ] [Alysande Stuart] started
      • [2017-07-30 01:07:55,999][INFO ][gateway ] [Alysande Stuart] recovered [0] indices into cluster_state

    最佳答案

    -p 9200告诉Docker在Windows上找到任何可用的端口(让我们说32768)并将其映射到9200容器端口。

    你需要这个:

    sudo docker run -d -p 9200:9200 elasticsearch:2.3.5
    

    借助-p 9200:9200,Docker将始终使用将在您的本地主机中可用的9200:localhost:9200

    关于bash - 无法在docker中访问Windows Linux容器的Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395649/

    相关文章:

    docker + 节点模块 : receiving error for local dependency while trying to run Dockerfile

    elasticsearch - Elasticsearch 的得分范围是多少?

    c++ - 我需要在另一个 ""中插入一个 ""

    linux - 保留返回值并且不从子 shell 运行

    bash - 删除重复行立即忽略第一个字段

    laravel - docker 容器上的 cron 无法正常工作

    docker - 为什么 `xhost` 被认为是危险的?

    apache-spark - 将数据从ElasticSearch读取到Spark数据集中

    node.js - zsh:当$ curl -s -X localhost:60702/api/bundle?name = light%20reading |时找不到匹配项| j q '.'

    bash:为什么我不能在后台 shell 中为 SIGINT 设置陷阱?