- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个运行 Ubuntu 16.04 的虚拟机,我想在其上部署一个打包为 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组合部署,要求所有容器以桥接模式运行。
预先感谢您的帮助
编辑:我发现这是一个 DNS 问题,因为我能够 ping 对应于 server1.vpn-remote.com
的 IP,即使在 VPN 连接似乎失败后也是如此。我正在阅读有关使用 Docker 和 Docker Compose 进行 DNS 管理以及它们对主机的 /etc/resolv.conf
文件的使用的文档。
最佳答案
希望六个月后您不再需要帮助!有些细节不同,但这听起来有点像我遇到的问题。就我而言,解决方案有点令人失望:连接到 VPN 后,重新启动 docker 守护进程:
sudo systemctl restart docker
我在这里做了一些推断,但看起来,当守护进程启动时,它会根据当时的网络状态做出一些决定/配置。就我而言,守护进程在我启动时启动。毫不奇怪,当我启动时,我还没有机会连接到 VPN。因此,我的容器流量(包括 DNS 查找)直接通过我的网络。
向this answer 致敬引导我走上正确的道路。
关于docker - 无法使 Docker 容器使用 OpenConnect VPN 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62909875/
1) 如何在 url.openConnection() 时发送特定的请求 header ? 2)另外,我怎样才能将请求转换为 POST 并发送 post 数据? 3) 您会推荐什么文档来进一步了解 u
我无法从我的 ubuntu 14.04 系统通过 openconnect VPN 客户端进行连接。我曾经在 1 个月前连接到这个 VPN,从那时起我就没有对 VPN 客户端设置进行任何更改。 这是我在
我正在尝试使用以下代码从 URL 下载 Web 内容: URL content = new URL(urlstr); HttpURLConnection urlConnection = (Ht
为什么我不能在一个方法中调用两次 OpenConnection()?当我调用它时出现此错误: The connection is already open. 我在SelectDisPatient()中
您好,我正在尝试深入学习 JAVA,因此我正在深入研究 JDK 源代码中的以下几行: URL url = new URL("http://www.google.com"); URLConnection
我正在构建一个应用程序,它在单独的线程中调用对 REST API 的 API 请求。该应用程序在调用后仍然挂起 - 没有抛出异常。 我尝试了很多方法从我的 Java 应用程序发出 GET 请求,但没有
我有以下java函数来检查网站响应代码: URL u = null; try { u = new URL("http://bforball.com"); HttpURLConnec
我一直在关注有关如何从 Android 应用程序将数据插入数据库的在线教程,并且除了这一小部分之外一切都正常 List params = new ArrayList<>(); params.add(n
是否可以重命名 openconnection()? 原文: URL url = new URL("http://google.co.in"); URLConnection connection = u
我有这个脚本: #!bin/bash NAME="user" PIDFILE="openconnect.pid" CERT="user.crt" KEY="user.key" PASS="pass"
我有一个缩短的网址。现在我使用 HttpUrlConnection 打开带有缩短链接的连接。 URL url = new URL(myshortened url); 现在我通过调用打开连接: Http
我想知道当 URL.openconnection() 时做了什么。 我做了一些这样的测试: public static void main(String[] args) { // tes
我正在使用 Scala 开发网站抓取应用程序。我正在抓取的网站在很大程度上是面向 session 的,因此我必须先访问该网站一次以获取 session ID,然后才能执行其他任何操作。 我像这样获取用
由于 Android 从 6.0 版开始从他们的 SDK 中删除了 apache web 客户端,而且我不希望在我的 apk 中包含该库,我正在迁移到 HttpURLConnection 方法。 为了
我知道这个问题应该用 System.setProperty("http.keepAlive", "false");在 openConnection 之前,但这对我不起作用。第一次尝试此代码有效,第二次
我正在编写一个使用蓝牙的 Cocoa 应用程序。我正在尝试连接到蓝牙设备,但失败。 IOBluetoothDevice *btDevice; // I do search and find the d
我不明白为什么抽象类可以转换为它的任何子类。例如: URL url = new URL("http://www.google.com"); HttpURLConnection httpURL = (H
我正在努力实现以下目标: ./vpnconnect.sh start 应该建立到服务器的 VPN 连接。 ./vpnconnect.sh stop 应该终止 VPN 连接。 这是未按预期工作的尝试 s
众所周知,这两个代码会产生相同的结果 public class MainApp { public static void main(String[] args) throws IOExcept
我一直在关注有关如何将数据从 android 应用程序插入到数据库中的在线教程,并且除了这个小部分之外,一切正常 List params = new ArrayList<>(); params.add
我是一名优秀的程序员,十分优秀!