Docker打开外部端口 - 没有打开好的端口

时间:2015-03-02 11:43:51

标签: docker port iptables

我正在运行一个使用5671端口的rabbitmq docker实例。

docker run -p 65000:5671 rabbitmq

如果我在运行实例时执行iptables -L -v,我会得到以下DOCKER链:

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

在我看来,码头工人正在做出错误的事情,即。它应该修改iptables以允许连接65000而不是5671。

我在这里弄错了吗?

注意:我希望能够在同一台机器上发射不同的rabbitmq实例,所以:

  • 我需要“外部”端口(此处为65000)为“变量”
  • 我希望能够在docker run - 时间决定使用哪个端口(以及打开哪个端口)

1 个答案:

答案 0 :(得分:2)

您刚刚获得了语法,它是-p HOST_PORT:CONTAINER_PORT,它会将主机上HOST_PORT的请求转发到容器上的CONTAINER_PORT

如果您只指定一个端口,它将被假定为容器端口,并将分配给主机上的随机高编号端口,因此我认为-p 5671将执行您想要的操作。

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

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