第一:有300名代表的人可以给“docker工人”做个标签吗? TYVM
我使用以下命令为elasticsearch运行docker容器:
docker run -d -i -t -p 9200:9200 -p 9300:9300 elasticsearch:0.90.5
哪个启动正确,当我curl localhost:9200我得到了elasticsearch json hello world消息。
我无法弄清楚的是如何让端口暴露在盒子外面。 我想要做的是:
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是eth0的IP地址。 这似乎并不奏效。
现在我的问题是:我如何正确运行这个容器并将这些端口暴露给外部世界呢?
这是我的“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可能会在未来支持联网。 但是现在你可以通过Pipework来pipe理Dockernetworking(仅限主机)。
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地址xxxx(无处不在):
pipework eth0 $(docker run -d -i -t elasticsearch:0.90.5) xxxx
我以为像你在第一次docker run -d -i -t -p 9200:9200 -p 9300:9300 elasticsearch:0.90.5运行它docker run -d -i -t -p 9200:9200 -p 9300:9300 elasticsearch:0.90.5应该可以工作。 也许你也有防火墙干扰?
你可以尝试运行一个普通的服务器(理想情况下没有docker弹性search,因为elasticsearchconfiguration可能是一个问题)端口9200或任何其他的第一,并确保你可以连接到? 而一旦这个工作,我认为原来的命令应该工作。
也许尝试sudo ufw allow 9200什么的?