假设一个应用程序动态打开在docker容器内运行的UDP端口,那么如何将这些端口暴露/绑定到外部(主机)端口?
这可能与提出的问题here相同,但答案(使用--net=host
)限制了运行将相同端口暴露给主机的多个容器实例的可伸缩性。
有没有办法在带有主机的容器中配置动态打开端口的一对一映射?
e.g。端口45199/udp
在容器内打开并暴露给主机上的端口45199/udp
?
答案 0 :(得分:4)
可能你可以找到一些方法来自动化容器主机的前端端口,但是你会遇到同样的问题,比如主机网络(多个容器实例可能会发生端口冲突)。
可能在你的场景中,最好的方法是暴露一些端口范围,即:
docker run --expose=7000-8000 ...
在默认桥接网络(使用docker inspect时必须使用容器IP)或用户定义网络(https://docs.docker.com/engine/userguide/networking/configure-dns/)的名称时,按IP地址引用容器。
答案 1 :(得分:0)
我也感到非常烦人,不允许您在Docker中动态公开端口。
显然,借助Kubernetes,您可以:
kubectl expose deployment first-deployment --port=80 --type=NodePort
另请参见片尾教程https://www.katacoda.com/courses/kubernetes/launch-single-node-cluster
和此处的kubectl手册https://www.mankier.com/1/kubectl-expose