Windows Host和Linux Docker Container之间的通信

时间:2018-11-20 07:17:17

标签: linux windows docker .net-core

enter image description here我有以下问题。我在Windows主机系统上有一个软件,它可以模拟此计算机上的com-interface。现在,我想在此软件中提供一个API /套接字/管道,它接受通过LAN传输的字符串。

提交软件应该是.net核心Web应用程序,它作为Docker容器(Linux)托管在kubernetes中。

我可以在Linux容器和Windows主机之间使用哪种技术进行通话。

  1. 命名管道->我认为它们在Linux下不可用?
  2. 套接字?
  3. 尝试在Windows主机上打开Web服务器以通过http获得访问权限吗?

您的想法是什么,为什么您更喜欢解决方案?

1 个答案:

答案 0 :(得分:1)

Linux确实具有命名管道,尽管不同操作的确切语义有所不同,但是您将遇到的问题是命名管道无法用于在不同系统之间进行通信。命名管道是用于在同一计算机上运行的进程的进程间通信。请注意,即使Windows Host和Linux Guest在同一台物理计算机中,它们仍被视为两个独立的系统。

TCP是套接字的最通用形式,并且是在两个OS之间进行连接的标准方法。如果您不知道为什么要使用其他协议,TCP通常是一个很好的选择,它将能够连接几乎所有内容。

现在唯一的问题是您要使用哪种应用程序级别协议,以及是否要添加任何安全层(即TLS)来加密和认证计算机之间的连接。如果您有一个仅需要传输简单字符串的简单服务,那么您可能可以直接使用TCP / TLS套接字,但是如果您想从标准化的措辞,技术以及用于诸如请求和响应通信之类的库和框架中受益,状态,身份验证,乐观锁定,缓存,代理,会话管理,任意长度的流编码等,然后明智的做法就是在HTTP / HTTPS上建立您的通信。您会发现当今很多服务都是作为Web服务构建的,因为当您需要扩展和使用这些功能时,它使事情变得简单得多。