【发布时间】:2023-03-23 03:44:01
【问题描述】:
我有一个运行 Ubuntu 16.04 的 VM,我想在其上部署一个打包为 Docker 容器的应用程序。应用程序需要能够向 VPN 下的服务器执行 HTTP 请求(例如 server1.vpn-remote.com)
我已成功配置主机 VM,以便通过 openconnect 连接到 VPN,我可以使用 systemd 服务打开/关闭此连接。
不幸的是,当我运行docker run mycontainer 时,主机和容器都无法访问server1.vpn-remote.com。奇怪的是,VPN 连接服务日志中并没有显示错误,而是停留在确认连接成功的 openconnect 消息中。
如果我在启动mycontainer 后重新启动VPN 连接,主机可以访问server1.vpn-remote.com,但不能访问容器。此外,如果我在mycontainer 或任何其他容器上发出任何类似docker run/start/stop/restart 的命令,即使对于主机,连接也会再次中断。
注意:我已经检查了 ip 路由,Docker 和 VPN 子网之间似乎没有冲突。
注意:使用--net="host" 运行容器会导致主机和容器都能够访问 VPN,但我想避免使用此选项,因为我最终会进行 docker compose 部署,这需要所有容器以桥接模式运行.
提前感谢您的帮助
编辑:我发现这是一个 DNS 问题,因为即使在 VPN 连接似乎失败后,我也能够 ping 与 server1.vpn-remote.com 对应的 IP。我正在阅读有关使用 Docker 和 Docker Compose 进行 DNS 管理的文档,以及它们对主机 /etc/resolv.conf 文件的使用。
【问题讨论】:
标签: docker vpn openconnect