我正在运行一个使用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
在我看来, docker 确实在做错事,即。它应该修改iptables以允许在65000而不是5671上进行连接。
我在这里弄错了吗?
注意:我希望能够在同一台计算机上触发Rabbitmq的不同实例,因此:
65000
)才能成为“变量” docker run
-time上决定要使用哪个端口(从而打开哪个端口)最佳答案
您刚刚了解了语法,它是-p HOST_PORT:CONTAINER_PORT
,它将把主机上的HOST_PORT
的请求转发到容器上的CONTAINER_PORT
。
如果仅指定一个端口,则将其假定为容器端口,并将其分配给主机上的随机高编号端口,因此我认为-p 5671
可以满足您的要求。
另外,如果您在Dockerfile中使用了EXPOSE
语句,则可以使用不带参数的-P
标志来自动将免费的高编号端口分配给容器上的暴露端口。
请注意,docker port
命令将提供容器的端口映射。
关于docker - Docker在外部端口开放-不开放良好端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28808981/