我正在运行一个使用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
- 时间决定使用哪个端口(以及打开哪个端口)答案 0 :(得分:2)
您刚刚获得了语法,它是-p HOST_PORT:CONTAINER_PORT
,它会将主机上HOST_PORT
的请求转发到容器上的CONTAINER_PORT
。
如果您只指定一个端口,它将被假定为容器端口,并将分配给主机上的随机高编号端口,因此我认为-p 5671
将执行您想要的操作。
或者,如果您在Dockerfile中使用了EXPOSE
语句,则可以使用不带参数的-P
标志自动将空闲的高编号端口分配给容器上的公开端口。 / p>
请注意,docker port
命令将为容器提供端口映射。