iptables - 将主机上的端口映射到 Docker 容器中的端口

iptables - 将主机上的端口映射到 Docker 容器中的端口

我正在 AWS Elastic Beanstalk 内运行 Docker 容器,运行 Amazon 的“Amazon Linux”,我认为它是 CentOS 的衍生产品。

在我的开发环境中,我想在我的应用程序上启用调试,以便我可以从本地计算机进行远程调试。这当然需要一个额外的端口,但AWS默认情况下只会将Docker容器中的一个端口映射到主机上。

我在机器上,可以看到 Docker 容器有一个本地地址(172.xxx),当我在主机上时,我可以直接点击该地址上的调试端口。问题是这个地址当然无法从我的本地计算机访问。

我想手动创建一个端口转发规则来转发呼叫<my-aws-host-ip>:<port><docker-local-ip>:<port>以便我可以连接进行远程调试。我相信 iptables 可能是正确的工具,但我不熟悉它的用法。我怎样才能实现这个目标?

答案1

创建一个没有配置的 Dockerfile,例如:

//Dockerfile

FROM somePkg:1.2.3
EXPOSE 1337 8080 8081

记住这一点,您将无法通过 PrivateIP 进行访问,只能通过 PublicIP 进行访问。您需要对此更加感兴趣,AWS 的 ElasticBeanstalk 已经构建了一些iptables对您有利的规则。如果您不使用v2该文件,则需要您让 docker 容器映射端口Dockerrun.aws.json

另请记住,AWS 的 ElasticBeanstalk 会自动将列表中的第一个端口转发到端口 80。

所以在这种情况下会是external_interface:80 -> docker_container:1337

相关内容