gpt4 book ai didi

docker - 如何在 docker 容器内将 DNS 名称别名为 hosts.docker.internal?

转载 作者:行者123 更新时间:2023-12-04 11:45:01 26 4
gpt4 key购买 nike

TL;DR:如何在我的容器中获取客户端以与主机上的服务建立 HTTPS 连接?
我在本地开发机器 (macOS) 的 VM 上运行了一项服务,该服务在端口 8443 上提供 HTTPS;它获得了 dev.mycoolproject.com 的证书和 dev.mycoolproject.com有一个 A记录指向 127.0.0.1。因此,如果我在本地机器上运行我的客户端并将其指向 https://dev.mycoolproject.com:8443它与我的本地服务建立了安全连接。
我想在 docker 容器中运行我的客户端,并且仍然让它连接到主机上的本地服务器。但显然dev.mycoolproject.com指向 127.0.0.1 不起作用,我不能只使用 /etc/hosts重定向它,因为主机的 IP 是动态的。我可以通过 host.docker.internal:8443 访问本地服务器,但我会收到 TLS 错误,因为主机名不匹配。
有什么办法可以让docker的DNS映射dev.mycoolproject.com到主机IP?我研究了在容器中本地运行 dnsmasq 但我无法让它工作。

最佳答案

我昨天遇到了类似的问题,并提出了一个解决方法,将条目添加到 /etc/hosts解析到主机IP。
您需要 dig或其他 DNS 工具来查询 IP。
如果您以 root 身份运行,则可以使用:

echo "$(dig +short host.docker.internal) dev.mycoolproject.com" >> /etc/hosts
如果你有 sudo 你可以运行:
echo "$(dig +short host.docker.internal) dev.mycoolproject.com" | sudo tee -a /etc/hosts
最初我希望 --add-host run option将允许主机 ip 参数中的特殊 docker 条目(如 host.docker.internal ),但不幸的是他们没有。
我想避免更多的容器配置,所以我选择了这个。设置 dnsmasq将是一个更稳定的解决方案。

关于docker - 如何在 docker 容器内将 DNS 名称别名为 hosts.docker.internal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64146145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com