docker开放外部端口 – 不打开好的

我正在运行一个rabbitmqdocker实例,它使用5671端口。

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决定使用哪个端口(以及哪个端口打开)

你刚刚得到了语法,它是-p HOST_PORT:CONTAINER_PORT ,它将把主机上的HOST_PORT请求转发到CONTAINER_PORT上的CONTAINER_PORT

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

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

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