【问题标题】:Exposing dynamically opened ports inside docker container在 docker 容器中公开动态打开的端口
【发布时间】:2019-01-28 16:47:39
【问题描述】:

假设一个应用程序动态打开在 docker 容器内运行的 UDP 端口,如何将这些端口暴露/绑定到外部(主机)端口?

这可能与here 提出的问题相同,但答案(使用--net=host)限制了运行多个容器实例向主机公开相同端口的可扩展性。

有没有办法配置容器中动态打开的端口与主机的一对一映射?

例如端口45199/udp在容器内打开,暴露给主机上的端口45199/udp

【问题讨论】:

  • 2022年在docker中动态打开端口是否还有问题?你解决了吗?

标签: linux docker iptables


【解决方案1】:

也许您可以找到一些方法来自动为容器主机添加端口,但是您将遇到与主机网络相同的问题(在多个容器实例的情况下可能会发生端口冲突)。

可能在您的场景中,最好的方法是公开一些端口范围,即:

docker run --expose=7000-8000 ...

在默认桥接网络的情况下通过 IP 地址引用容器(您必须使用 docker 检查容器 IP)或在用户定义的网络 (https://docs.docker.com/engine/userguide/networking/configure-dns/) 的情况下按名称引用容器。

【讨论】:

  • 谢谢。其他人也给了我答案here
  • 链接已损坏或私有
【解决方案2】:

我还发现不允许在 Docker 中动态公开端口非常烦人。

显然你可以使用 Kubernetes:

kubectl expose deployment first-deployment --port=80 --type=NodePort

另见 katacoda 教程https://www.katacoda.com/courses/kubernetes/launch-single-node-cluster

这里有 kubectl 手册https://www.mankier.com/1/kubectl-expose

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2023-03-12
    • 2021-05-13
    • 2016-04-10
    • 2021-11-16
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多