2015-03-02 199 views
0

我正在运行一个rabbitmq docker实例,它使用5671端口。Docker在外部端口打开 - 没有打开好的端口

docker run -p 65000:5671 rabbitmq 

如果我再做iptables -L -v同时运行的实例,我得到以下泊坞窗链:

target  prot opt in  out  source    destination 
ACCEPT  tcp -- !docker0 docker0 anywhere    xxx tcp dpt:5671 

在我看来,那是码头工人做什么是错的,即。它应该修改iptables允许连接在65000而不是5671.

我在这里得到什么错?

NB:我希望能够在同一台机器上火的RabbitMQ的不同实例,所以:

  • 我需要的“外部”端口(这里65000)是“变量”
  • 我希望能够在docker run - 时间来决定使用哪个端口(因此,要打开的端口)
+0

为了感谢-1和接近的建议,我建议你去检查我的问题在ServerFault上收到的接近0级的活动:http://serverfault.com/questions/671870/docker-open- ports-in-iptables-rabbitmq;) – lajarre 2015-03-02 16:09:28

+0

是的,有人似乎在投票结束所有码头问题。这不是很有帮助。 – 2015-03-02 18:08:47

回答

2

你拿到的语法后到前,它的-p HOST_PORT:CONTAINER_PORT,将从HOST_PORT请求转发上 容器上的主机为CONTAINER_PORT

如果你只是指定一个端口,它将被认为是容器端口,并将分配给主机上随机的高编号端口,所以我认为-p 5671会做你想做的。

或者,如果您在Dockerfile中使用了EXPOSE语句,则可以使用不带参数的-P标志自动将高编号端口分配给容器上的暴露端口。

请注意,docker port命令将为容器提供端口映射。

+0

真的倒退了!猜猜这些文档对于我的想法并不是很清楚,特别是我知道我也在使用'-p 127.0.0.1 :: 5672',这让我很困惑:这里localhost-available端口写在参数后面第二个':' – lajarre 2015-03-02 15:37:40

+0

是的,说实话我不得不再次检查自己。 Docker中大部分东西都是主机;卷的工作方式相同。 – 2015-03-02 15:40:53

+0

其实我认为我们都错过了一点:您的建议是错误的,如freenode #docker上的某人所述。我的确拥有它,而且我的确手动操作了我的iptables。 Docker不为外部映射做这件事 – lajarre 2015-03-02 17:47:10