networking - 如何将基于主机名的请求转发到特定的 docker 容器

标签 networking dns docker hostname

我正在尝试使用基于主机名的连接到 docker 容器。即:我将浏览器连接到 web01.docker.example.org(假设 *.docker.example.org 上的通配符 DNS 记录指向我的 docker 框)。例如,如何启用 docker 将此请求转发到我的 nginx docker?

这个想法的灵感来自 apache 的 VirtualNameHost 模型,它执行此操作,除了 VirtualHost 而不是正在运行的容器。

最佳答案

Docker 本身无法做到这一点,但是有一个非常优秀的 project by Jason Wilder使用他自己的自制docker-gen 解决了这个问题实用程序(也可以在他的 Github 帐户上找到)。您可以使用 docker pull jwilder/nginx-proxy 拉取受信任的构建并运行它。然后,你可以很容易地启动另一个容器(你想在 web01.docker.example.org 主机名上监听的那个):
docker run -it -h "web01.docker.example.org" myContainernginx-proxy容器自动检测容器上暴露了哪些端口,并将容器绑定(bind)到该端口上的 nginx 后端。这也是如何让多个容器监听一个 IP 地址,但根据主机名路由到多个容器的方法。该项目还支持 SSL 和自定义 vhost.d 配置文件等。我已经使用它很长时间了,没有任何问题,并为此强烈推荐它。祝你好运!

关于networking - 如何将基于主机名的请求转发到特定的 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116910/

相关文章:

c# - Windows-7:当网络适配器处于隐藏状态时禁用网络适配器上的互联网连接共享?

sockets - 如何使用 std.socket 和 std.socketstream? (D 编程语言 2.x)

networking - whatsapp 使用 wireshark 嗅探 ssl 流量

php - gethostbyaddr 和 checkdnsrr 没有给出任何输出

web - 确定更常见输入哪个域(WWW)

networking - 使用 EKS 与 IP 白名单服务通信

Scala - 领域对象建模

docker - 在 Docker 构建期间安装 brew 包不起作用

mysql - 连接docker容器和mysql

centos - 在 docker 容器中运行 docker?