Во-первых: может кто-нибудь с 300 представителями сделать тег для "докера", пожалуйста? TYVM
Я запускаю контейнер докеров для elasticsearch с помощью следующей команды:
docker run -d -i -t -p 9200: 9200 -p 9300: 9300 elasticsearch: 0.90.5
Что запускается правильно, и когда я скручиваю localhost: 9200, я получаю сообщение hello world json elasticsearch.
Я не могу понять, как сделать так, чтобы порты были открыты нестандартно. Я пытаюсь сделать следующее:
docker run -d -i -t -p 123.123.123.123:9200:9200 -p 123.123.123.123:9300:9300 elasticsearch: 0.90.5
где 123.123.123.123 - IP-адрес eth0. Похоже, это не работает.
А теперь мой вопрос: как мне правильно запустить этот контейнер и открыть эти порты внешнему миру?
Вот мой "ip addr" из коробки, который представляет собой безголовую виртуальную машину под управлением ubuntu 12.04.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:52:56:93:78:f6 brd ff:ff:ff:ff:ff:ff
inet 162.248.XXX.XXX/24 brd 162.248.XXX.255 scope global eth0
inet6 XXX::250:ab00:fe89:78f6/64 scope link
valid_lft forever preferred_lft forever
3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 72:44:60:e8:46:2a brd ff:ff:ff:ff:ff:ff
inet 10.0.3.1/24 brd 10.0.3.255 scope global lxcbr0
inet6 XXX::7080:60ff:fee8:462a/64 scope link
valid_lft forever preferred_lft forever
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether ba:d6:67:1a:13:bc brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 scope global docker0
inet6 XXX::549c:ebff:fe7d:a22/64 scope link
valid_lft forever preferred_lft forever
210: vethgVxkby: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master docker0 state UP qlen 1000
link/ether ba:d6:67:1a:13:bc brd ff:ff:ff:ff:ff:ff
inet6 XXX::b8d6:67ff:fe1a:13bc/64 scope link
valid_lft forever preferred_lft forever
Docker может поддерживать сеть в будущем. Но пока ты можешь Трубопровод управлять сетью Docker таким образом (только для хоста).
sudo pipework br1 $(docker run -d -i -t elasticsearch:0.90.5) 192.168.2.1/24
sudo ip addr add 192.168.2.254/24 dev br1
Но если вы хотите, чтобы это был публичный IP-адрес x.x.x.x (повсеместно):
pipework eth0 $(docker run -d -i -t elasticsearch:0.90.5) x.x.x.x
Я думал, что запустил его, как ты, сначала docker run -d -i -t -p 9200:9200 -p 9300:9300 elasticsearch:0.90.5
должно сработать. Может у вас тоже межсетевой экран мешает?
Можете ли вы сначала попробовать запустить обычный сервер (в идеале elasticsearch без докера, потому что конфигурация elasticsearch тоже может быть проблемой) на порту 9200 или чем-то еще и убедиться, что вы можете подключиться к нему? И как только это сработает, я думаю, что исходная команда должна работать.
Может попробовать sudo ufw allow 9200
или что-то?