docker - Docker在外部端口开放-不开放良好端口

标签 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

在我看来, 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/

    相关文章:

    php - Docker Redis 连接被拒绝

    android - 如何将现有的 MS Access 移植到 SQLite 以用于 Android 应用程序开发?

    node.js - Redis 和 docker-compose 连接 127.0.0.1 :6379

    git - 通过非标准 SSH 端口使用 Git

    centos - 在谷歌计算引擎中打开特定端口。 [centos7]

    python - Dockerfile 添加失败 : No Source files were specified

    django - 更改镜像后更新Docker容器

    docker - 将Docker暴露给世界

    Android:NAT 表: “FIX ME! impliment getnetbyaddr() bionic/libc/bionic/stubs.c:444” 是什么意思以及如何修复它

    https - 鱿鱼+iptables : how do i allow https to pass-through and bypassing Squid?