Запуск elasticsearch с докером

Я новичок в elasticsearch, поэтому извините, если мой вопрос глупый. Я пытаюсь запустить его с помощью докера. После того, как я вытащил изображение elasticsearch из докер-хаба, я запустил его с помощью команды:

docker run -p 9200:9200 -p 9300:9300 --name=ES elasticsearch

Но когда я открыл http://192.168.99.100:9200 (мой IP-адрес докер-машины 192.168.99.100), страница нет в наличии.

Я попытался изменить свой elasticsearch.yml, как показано ниже:

network.publish_host: 192.168.99.100

но это не работает. Кто-нибудь поможет мне?

Спасибо.

обновление 1

Я пытаюсь передать параметр network.publish_host непосредственно в командной строке с помощью --network.publish_host=192.168.99.100 (как упоминал @Val), но он все еще не работает. Вот лог:

$ docker run -p 9200:9200 -p 9300:9300 --name=ES elasticsearch  --network.publish_host=192.168.99.100
[2015-10-31 05:18:57,305][INFO ][node                     ] [Slipstream] version[2.0.0], pid[1], build[de54438/2015-10-22T08:09:48Z]
[2015-10-31 05:18:57,306][INFO ][node                     ] [Slipstream] initializing ...
[2015-10-31 05:18:57,445][INFO ][plugins                  ] [Slipstream] loaded [], sites []
[2015-10-31 05:18:57,655][INFO ][env                      ] [Slipstream] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/sda1)]], net usable_space [11.5gb], net total_space [18.1gb], spins? [possibly], types [ext4]
[2015-10-31 05:19:01,778][INFO ][node                     ] [Slipstream] initialized
[2015-10-31 05:19:01,784][INFO ][node                     ] [Slipstream] starting ...
[2015-10-31 05:19:02,072][INFO ][transport                ] [Slipstream] publish_address {192.168.99.100:9300}, bound_addresses {127.0.0.1:9300}, {[::1]:9300}
[2015-10-31 05:19:02,140][INFO ][discovery                ] [Slipstream] elasticsearch/D9frl4aqQlG_ihimJ6eY_w
[2015-10-31 05:19:05,309][INFO ][cluster.service          ] [Slipstream] new_master {Slipstream}{D9frl4aqQlG_ihimJ6eY_w}{192.168.99.100}{192.168.99.100:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
[2015-10-31 05:19:05,370][INFO ][http                     ] [Slipstream] publish_address {192.168.99.100:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200}
[2015-10-31 05:19:05,373][INFO ][node                     ] [Slipstream] started
[2015-10-31 05:19:05,496][INFO ][gateway                  ] [Slipstream] recovered [0] indices into cluster_state

person Nam Hoang    schedule 31.10.2015    source источник
comment
Вы пытались передать параметр network.publish_host непосредственно в командной строке с помощью --network.publish_host=192.168.99.100?   -  person Val    schedule 31.10.2015
comment
Что, если вы добавите в команду --net=host и попытаетесь получить доступ к http://127.0.0.1:9200? ES 2.0 по умолчанию привязывается к локальному сетевому интерфейсу.   -  person Val    schedule 31.10.2015
comment
Вы используете Windws/Mac? (докер в виртуальной машине)   -  person VonC    schedule 31.10.2015
comment
@VonC Я использую Mac.   -  person Nam Hoang    schedule 31.10.2015
comment
Можете ли вы попробовать запустить контейнер nginx для проверки вашей сети Docker? docker run -d -p 8080:80 nginx, затем откройте http://192.168.99.100:8080. Обратите внимание, что последние образы Elasticsearch Docker теперь 5.0, а не 2.x.   -  person Tuan    schedule 02.11.2016
comment
@HoangVanNam Как это исправить?   -  person niaomingjian    schedule 01.11.2017


Ответы (1)


Поскольку OP использует Mac, порт 9200 должен быть переадресация порта (с boot2docker или с docker machine) на уровне VM (VirtualBox).

VBoxManage controlvm "boot2docker-vm" --natpf1 "tcp-port9200 ,tcp,,9200,,9200"
VBoxManage controlvm "boot2docker-vm" --natpf1 "udp-port9200 ,udp,,9200,,$9200

(controlvm если виртуальная машина работает, modifyvm если виртуальная машина остановлена)

person VonC    schedule 31.10.2015